冰心丶
如何用Vector把玩家向前推进,这东西研究了一段时间还是没能研究出来只好来请教大佬们了

Ir.Nep
本帖最后由 qzz740827 于 2017-9-8 19:45 编辑

方向向量是个好东西

  1. Vector 方向向量 = player.getLocation().getDirection();
  2. player.setVelocity(方向向量);
复制代码



如果是要实现单纯往前不往上下的话:
  1. Vector vector = player.getLocation().getDirection();
  2. vector.setY(0d);
  3. //如果玩家面朝大地或90°仰望天空,X 和 Z会是0
  4. if(vector.getX() == 0 && vector.getY() == 0)
  5.   vector.setX(1d);

  6. //使用normalize() 将vector伸长到一个单位的长度
  7. vector.normalize();

  8. //使用multiply() 将vector缩放到指定的长度
  9. //一单位的长度缩小到0.09倍大概就是一方块的长度
  10. vector.multiply(0.09);

  11. player.setVelocity(vector);
复制代码



 咕 
[Wiki][PCD][[/]]Spigot Wiki 翻译 & 插件开发指南
http://www.mcbbs.net/thread-693264-1-1.html
这位大佬的帖子里有一章介绍了向量的运算
向前推进很简单的,你得多试几次
  1. player.setVelocity(player.getLocation().getDirection);
复制代码
当然这个推进的力度有点凶,你得 normalize 之后可能还得 multiply 0.7


JackC92
你可以计算出每次循环玩家所造成的所有位移效果(击退,玩家运动,爆炸等等),计算出一个Velocity,然后把每个component加到player的Location上(这就像是独立于MC做游戏时的Translate)

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