我在學習Unity的第三天,目前正在做roll-a-ball tutorial。我正在嘗試添加一個重新啓動按鈕,將球傳回到開始位置/原點。這一切都很好,但我重新啓動後球會繼續移動,但我希望它保持在一個位置,而不是自己移動。如何在重新啓動它的位置後自行移動球體?
我的意思是,如果我以最大速度向左移動並按'R'重新啓動,那麼它會保持向左移動一段時間,但是我想實現的是球不會保持在我重新啓動它的位置後自行移動(也許它的速度正在減慢,以至於它不明顯,在這種情況下,我希望它的速度更快)。
這是我剛剛試過的「希望」的代碼,但沒有。我認爲我在這裏遇到的問題是,新的axisHorizontal/axisVertical變量值會再次分配給下一個幀,該值取自Input.GetAxis,從我聽說的這是不可能改變的。
這意味着一個大於0/0/0的MoveForce和AddForce會在下一幀再次激活。
using UnityEngine;
using System.Collections;
public class PlayerScript : MonoBehaviour {
public float movementSpeed = 7f;
private Rigidbody rigidSphere;
void Start() {
rigidSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
float axisHorizontal = Input.GetAxis("Horizontal");
float axisVertical = Input.GetAxis("Vertical");
Vector3 movementForce = new Vector3(axisHorizontal, 0.0f, axisVertical);
rigidSphere.AddForce(movementForce * movementSpeed);
if (Input.GetKeyDown(KeyCode.R)) {
transform.position = new Vector3(0, 0, 0);
rigidSphere.AddForce(0, 0, 0);
axisHorizontal = 0;
axisVertical = 0;
}
}
}
我試着用搜索引擎上如何改變是從GetAxis獲取的值,但其他人聲稱它是不可能這樣做。所以我真的不知道如何讓它永遠不會永遠移動...
而且我還得到了一個'獎金'的問題,在這兩天,我一直在學習統一,但他們不值得另一個問題,也許如果他們以前已經回答過了(我一直沒有找到任何幫助我的文檔),那麼就給我一個鏈接,告訴我在哪裏可以找到我的問題的答案。
的問題是,如何使球停止一段時間後,移動後,我按下按鈕(W/A/S/d,在輸入經理正/負按鈕默認值)?例如,我只需按下'W'一秒鐘,但球將永遠向前移動,永不停止。
我想要實現的是例如在按下'W'一秒後,幾秒鐘後球完全停止,似乎GetAxis的值永遠不會回到0.我嘗試谷歌關於它,我認爲這與輸入管理器中的Gravity有關 - 我試着改變它,但球仍然會一直運動,我注意到唯一改變的就是球的速度。
如果有人能夠幫助我解決這些問題,我將不勝感激。
我想說的R,計算出球的力量和適用於相反的方向相同(但不要問我怎麼樣)。 –