a984044480
我想要让巨人实体垂直向天空跳跃25格,水平不动,我刚刚发的帖子因为标题不好被删除了,恳请刚刚的大佬再给我发一遍代码吧,我会给你最高评分的,谢谢!

夏日冰熊

这一段比较乱整理一下
Entity entity;      //你的生物
Location loc=entity.getLocation();   //初始坐标
double oldYaw=loc.getYaw();    //初始竖直朝向
loc.setYaw(90.0);      //让坐标竖直往上
entity.setLocation(loc);      //让生物向上面看
Vector vec=entity.getEyeLocation().getDirection().multiply(25);   //此时生物朝向的向量 注意这里的25可以改小一点,我不太确定这一次多长
entity.setVelocoty(vec);   //让生物沿着向量移动一次
loc=entity.getLocation();     //移动之后的坐标
loc.setYaw(oldYaw);   //让坐标回到原来生物竖直方向上的朝向
entity.setLocation(loc);      //让生物朝着原来的方向,看起来
手机打代码实属不易,如果解决了您的问题,请给我最高的评分

夏日冰熊
幸亏我复制了一遍awa。。。。
另外改解决方案我也私信你了

RE_OVO
南外丶仓鼠 发表于 2019-9-13 19:10
这一段比较乱整理一下
Entity entity;      //你的生物
Location loc=entity.getLocation();   //初始坐标 ...

在吗?为什么要让他抬头?直接new一个Vector不会吗?

RE_OVO
本帖最后由 jebme 于 2019-9-13 19:33 编辑

调用setVelocity方法即可,赋予一个运动向量
setVelocity(new Velocity(x,y,z));

由于你说水平不动,所以x和z肯定是0
至于y, 并不是25
简单解释下吧
这个向量相当于一个初速度,而不是他会运动多少格, mc中, Y轴的运动公式为每个tick减去0.08然后乘以0.98
因此可以反向迭代计算出初速度

这里大概计算了下,大概是2.28

因此,你只需要 setVelocity(new Vector(0, 2.28D, 0)); 即可

夏日冰熊
jebme 发表于 2019-9-13 19:23
在吗?为什么要让他抬头?直接new一个Vector不会吗?

我懒吖awa 况且我不太喜欢方法套方法

夏日冰熊
jebme 发表于 2019-9-13 19:23
在吗?为什么要让他抬头?直接new一个Vector不会吗?

理解才是最重要的awa我们俩方法大致一样了

RE_OVO
南外丶仓鼠 发表于 2019-9-13 19:33
理解才是最重要的awa我们俩方法大致一样了

连数值是几都不知道,还大致一样了?
直接multiply上25就完事了?

夏日冰熊
jebme 发表于 2019-9-13 19:36
连数值是几都不知道,还大致一样了?
直接multiply上25就完事了?

没用过,所以我说让他自己调试嘛,不太清楚bukkit的vector

夏日冰熊
jebme 发表于 2019-9-13 19:36
连数值是几都不知道,还大致一样了?
直接multiply上25就完事了?

请仔细阅读我的回答

a984044480
jebme 发表于 2019-9-13 19:32
调用setVelocity方法即可,赋予一个运动向量
setVelocity(new Velocity(x,y,z));

大佬那啥= =我直接写上了e.getEntity().setVelocity(new Vector(0, 2.28D, 0));这句话,但是他还是不动,巨人实体是没用得嘛= =

第一页 上一页 下一页 最后一页