2015-04-15 20 views
0

我很團結,我決定做一個簡單的第一人稱遊戲,但是我的腳本只允許玩家四處看看,而不是移動。我已經使用了AddForce,但是我不確定我是否正確地做了。Unity C#第一人稱腳本不移動

public float walkSpeedForward = 5f; 
public float walkSpeedStrafe = 4f; 
public float walkSpeedBack = 3f; 
public float sprintMultiplier = 2f; 
public Camera cam; 
public float sensitivityX = 0f; 
public float sensitivityY = 0f; 
public float minimumX = -360F; 
public float maximumX = 360F; 
public float minimumY = -60F; 
public float maximumY = 60F; 
public Rigidbody rb; 
float rotationY = 0f; 


// Use this for initialization 
void Awake() { 
    rb = GetComponent<Rigidbody>(); 
    rb.freezeRotation = true; 
} 

// Update is called once per frame 
void Update() { 
    float rotationX = cam.transform.localEulerAngles.y + Input.GetAxis ("Mouse X") * sensitivityX; 
    rotationY += Input.GetAxis ("Mouse Y") * sensitivityY; 
    rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); 
    cam.transform.localEulerAngles = (new Vector3(-rotationY, rotationX, 0f)); 

} 
void FixedUpdate() 
{ 
    rb.AddForce (new Vector3 (Input.GetAxis ("Horizontal") * walkSpeedStrafe * Time.deltaTime, 0, Input.GetAxis ("Vertical") * walkSpeedForward * Time.deltaTime)); 
} 
+0

http://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.html –

回答

1

不要使用AddForce,它是物理推送對象。移動角色實際上並不理想。

你可以學習如何正確地做一個腳本,甚至,通過點擊

資產>導入包>字符使用一個現成的腳本。這個軟件包已經有字符聲音和你正在尋找的腳本。如果你願意,你可以只選擇腳本,但是我建議你把它們全部導入,因爲你正在學習它。所以你會知道如何附加聲音,控件和模型。當你學習這個包的時候。僅供參考,您無需下載此文件,它已存在於您的計算機上。

看看這個視頻Click Here

它只會花費你的時間12分鐘。

+0

我正在努力學習腳本的基礎知識,並且在遵循您的建議之後,我設法完成了腳本。雖然這很有幫助,但我正在尋找一種更簡單的解決方案,我可以實施和使用自己,而不是簡單理解。這些劇本涵蓋了各種各樣的主題,當我有一個更好的理解時,我寧願回到他們身邊,因爲他們似乎對於初學者來說簡單閱讀和完全掌握是非常複雜的。對我來說,找到這樣的基礎知識是否是一種更簡單的方法,包括能夠以一種不太複雜的方式回答我的特定問題的東西? – Darkbyte

+0

Unity3D已經有一份文檔,將100%滿足您的需求。幾乎完全相同,你在做什麼。你想要文件還是你想要12分鐘的視頻? – Aizen

+0

點擊我的答案上的鏈接 – Aizen