我想推動一個暴徒離開方向一定的距離我右鍵點擊暴民,但是當我使用這段代碼時,暴徒推開的距離會根據距離有多近或遠一些而改變我是對暴民。從一定距離的起始方向
target.motionX = (target.posX - player.posX) * 0.5;
target.motionZ = (target.posZ - player.posZ) * 0.5;
我知道我需要弄清楚玩家所面對的方向,然後讓暴徒遠離一定的距離。我只是不知道該怎麼做。
我想推動一個暴徒離開方向一定的距離我右鍵點擊暴民,但是當我使用這段代碼時,暴徒推開的距離會根據距離有多近或遠一些而改變我是對暴民。從一定距離的起始方向
target.motionX = (target.posX - player.posX) * 0.5;
target.motionZ = (target.posZ - player.posZ) * 0.5;
我知道我需要弄清楚玩家所面對的方向,然後讓暴徒遠離一定的距離。我只是不知道該怎麼做。
首先,你必須要找到距離:
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);
那麼xProj和zProj會是我的動作嗎? – Minigeek22
是的。我沒有測試過代碼,但我認爲它接近你要找的東西。 –
其實,我注意到我的代碼有一個錯誤。我不應該轉換爲學位。再次看到我的編輯。 –
那麼,你有公式中的目標和玩家之間的距離。也許你想要的只是距離的標誌(方向)。 –
你會用什麼公式? – Minigeek22
我明白你的意思了。看到我的編輯,也許這是更接近。 –