我想将一个暴徒推向远离我右键点击暴徒的方向一定距离但是当我使用这个代码时,暴徒被推开的距离会根据我对暴徒的距离或距离的变化而变化。 / p>
target.motionX = (target.posX - player.posX) * 0.5;
target.motionZ = (target.posZ - player.posZ) * 0.5;
我知道我需要获得玩家所面对的方向然后将移动远离那个距离。我只是不知道该怎么做。
答案 0 :(得分:2)
首先你必须找到距离:
float xDis = target.posX - player.posX;
float zDis = target.posZ - player.posZ;
如果xDis
非零,请计算角度:
float tangent = zDis / xDis;
float angle = Math.arctan(tangent);
然后,确定投掷向量的长度:
float length = 0.5;
然后是两个轴上的投影:
float xProj = length*Math.cos(angle)*Math.signum(xDis);
float zProj = length*Math.sin(angle)*Math.signum(xDis);
这些是您的motionX
和motionY
部分。
如果xDis
为零,那么我认为您需要这种特殊情况。
float xProj = 0;
float zProj = length*Math.signum(zDis);