如何用Vector把玩家向前推进,这东西研究了一段时间还是没能研究出来只好来请教大佬们了
本帖最后由 qzz740827 于 2017-9-8 19:45 编辑
方向向量是个好东西
复制代码
如果是要实现单纯往前不往上下的话:
复制代码
方向向量是个好东西
- Vector 方向向量 = player.getLocation().getDirection();
- player.setVelocity(方向向量);
如果是要实现单纯往前不往上下的话:
- Vector vector = player.getLocation().getDirection();
- vector.setY(0d);
- //如果玩家面朝大地或90°仰望天空,X 和 Z会是0
- if(vector.getX() == 0 && vector.getY() == 0)
- vector.setX(1d);
- //使用normalize() 将vector伸长到一个单位的长度
- vector.normalize();
- //使用multiply() 将vector缩放到指定的长度
- //一单位的长度缩小到0.09倍大概就是一方块的长度
- vector.multiply(0.09);
- player.setVelocity(vector);
[Wiki][PCD][[/]]Spigot Wiki 翻译 & 插件开发指南
http://www.mcbbs.net/thread-693264-1-1.html
这位大佬的帖子里有一章介绍了向量的运算
向前推进很简单的,你得多试几次
复制代码当然这个推进的力度有点凶,你得 normalize 之后可能还得 multiply 0.7
http://www.mcbbs.net/thread-693264-1-1.html
这位大佬的帖子里有一章介绍了向量的运算
向前推进很简单的,你得多试几次
- player.setVelocity(player.getLocation().getDirection);
你可以计算出每次循环玩家所造成的所有位移效果(击退,玩家运动,爆炸等等),计算出一个Velocity,然后把每个component加到player的Location上(这就像是独立于MC做游戏时的Translate)