我想要让巨人实体垂直向天空跳跃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。。。。
另外改解决方案我也私信你了
另外改解决方案我也私信你了
南外丶仓鼠 发表于 2019-9-13 19:10
这一段比较乱整理一下
Entity entity; //你的生物
Location loc=entity.getLocation(); //初始坐标 ...
在吗?为什么要让他抬头?直接new一个Vector不会吗?
本帖最后由 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)); 即可
调用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我们俩方法大致一样了
jebme 发表于 2019-9-13 19:36
连数值是几都不知道,还大致一样了?
直接multiply上25就完事了?
没用过,所以我说让他自己调试嘛,不太清楚bukkit的vector
jebme 发表于 2019-9-13 19:32
调用setVelocity方法即可,赋予一个运动向量
setVelocity(new Velocity(x,y,z));
大佬那啥= =我直接写上了e.getEntity().setVelocity(new Vector(0, 2.28D, 0));这句话,但是他还是不动,巨人实体是没用得嘛= =