角色控制
1.角色2d游戏八方向wasd控制代码。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CharCTR : MonoBehaviour { public GameObject myChar; float moveSpeed = 1.5f; public Animator ani; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { //通过刚体控制物体移动,需要添加刚体 Vector3 moveForward = Vector3.zero; if (Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D)) { moveForward.y += 1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 4); ani.SetInteger("idleState", 4); } else if (Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D)) { moveForward.y += -1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 0); ani.SetInteger("idleState", 0); } else if (Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.S)) { moveForward.x += -1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 2); ani.SetInteger("idleState", 2); } else if (Input.GetKey(KeyCode.D) && !Input.GetKey(KeyCode.W) && !Input.GetKey(KeyCode.S)) { moveForward.x += 1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 6); ani.SetInteger("idleState", 6); } else if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.W) ) { moveForward.x += 1; moveForward.y += 1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 5); ani.SetInteger("idleState", 5); } else if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.W)) { moveForward.x += -1; moveForward.y += 1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 3); ani.SetInteger("idleState", 3); } else if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.S)) { moveForward.x += -1; moveForward.y += -1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 1); ani.SetInteger("idleState", 1); } else if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.S)) { moveForward.x += 1; moveForward.y += -1; ani.SetInteger("charState", 1); ani.SetInteger("walkState", 7); ani.SetInteger("idleState", 7); } else { ani.SetInteger("charState", 0); } GetComponent<Rigidbody2D>().MovePosition(moveForward * moveSpeed * Time.fixedDeltaTime+transform.position); } }

animator

锁定Z轴旋转

2.鼠标控制
Vector3 moveForward = Vector3.zero; //将世界坐标换算成屏幕坐标 Vector3 vpos3 = Camera.main.WorldToScreenPoint(transform.position); Vector2 vpos2 = new Vector2(vpos3.x, vpos3.y); //取得鼠标点击的屏幕坐标 Vector2 input = new Vector2(Input.mousePosition.x, Input.mousePosition.y); //取得主角到目标点的向量 Vector2 normalied = ((vpos2-input)).normalized; //注意normalized是格式化向量,以为vpos2 – input是计算两个向量之间的距离,格式化后才是它们的方向。格式化后向量的取值范围在 - 1 到 + 1 之间。 //我们忽略Z轴的向量,把2D向量应用在3D向量中。 Vector3 targetDirection = new Vector3(normalied.x, normalied.y,0.0f);
雁过留声,人死留名。人生仿若风拂沙漠,未留下痕迹……但愿你我之汗水,来得及有所传承……
浙公网安备 33010602011771号