遊戲開發之角色移動的一些程式碼
阿新 • • 發佈:2018-11-26
淺談個人認知的幾種方法
一:通過Transform元件來移動
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehaviour { public float MoveSpeed = 2f; public GameObject gameobject; void Update() { if(Input.GetKey(KeyCode.W)) { gameObject.transform.Translate(Vector3.forward * Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { gameObject.transform.Translate(Vector3.back * Time.deltaTime); } if (Input.GetKey(KeyCode.A)) { gameObject.transform.Translate(Vector3.left * Time.deltaTime); } if (Input.GetKey(KeyCode.D)) { gameObject.transform.Translate(Vector3.right * Time.deltaTime); } } }
二:通過新增剛體 獲得剛體元件新增力來移動
public class MoveTest02 : MonoBehaviour { //這個方法會受到物理因素的影響 public GameObject sphere; public Rigidbody sphereRigdbody; void Update () { if (Input.GetKey(KeyCode.W)) { sphereRigdbody.AddForce(Vector3.forward*15f*Time.deltaTime, ForceMode.Impulse); } if (Input.GetKey(KeyCode.S)) { sphereRigdbody.AddForce(Vector3.back*15f * Time.deltaTime, ForceMode.Impulse); } if (Input.GetKey(KeyCode.A)) { sphereRigdbody.AddForce(Vector3.left*15f * Time.deltaTime, ForceMode.Impulse); } if (Input.GetKey(KeyCode.D)) { sphereRigdbody.AddForce(Vector3.right*15f * Time.deltaTime, ForceMode.Impulse); } } }
新增Rigibody後通過horizontal與Vertical的判定來實現物體的移動
public class MoveTest03 : MonoBehaviour { public int speed = 5; public float H; public float V; void Update () { H = Input.GetAxis("Horizontal") * Time.deltaTime * speed; V = Input.GetAxis("Vertical") * Time.deltaTime * speed; this.gameObject.transform.Translate(H, 0, V); } }