【Unity完整游戏开发案例】从0做一个太空大战游戏
1.实现飞机移动控制
// 这个脚本实现控制飞机前后移动,方向由鼠标控制
//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerController : MonoBehaviour
{// 这个脚本实现控制飞机前后移动,方向由鼠标控制//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜//2025.4.2@leoyang public GameObject PlayerPlane;public float Speed=10f;public float RotateSpeed = 5f;
//---------------------void Update(){if (Input.GetKey(KeyCode.W)){PlayerPlane.transform.Translate(new Vector3(0, 0, 1* Speed * Time.deltaTime));}if (Input.GetKey(KeyCode.S)){PlayerPlane.transform.Translate(new Vector3(0, 0,-1* Speed*Time.deltaTime));}if (Input.GetKey(KeyCode.A)){PlayerPlane.transform.Rotate(new Vector3(0, 0, 1* RotateSpeed*Time.deltaTime));}if (Input.GetKey(KeyCode.D)){PlayerPlane.transform.Rotate(new Vector3(0, 0, -1 * RotateSpeed * Time.deltaTime));}}
}
第二版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerController : MonoBehaviour
{// 这个脚本实现控制飞机前后移动,方向由鼠标控制//1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜//2025.4.2@leoyang public GameObject PlayerPlane;public float Speed=10f;public float RotateSpeed = 5f;public float ViewRotateSpeed = 10f;//---------------------private void Start(){Cursor.lockState = CursorLockMode.Locked;}void Update(){MoveController();ViewController();}/// <summary>/// 控制飞机基本移动/// </summary>void MoveController(){float tempValue = Input.GetAxis("Vertical");PlayerPlane.transform.Translate(new Vector3(0, 0, tempValue * Speed * Time.deltaTime));float tempADValue = Input.GetAxis("Horizontal");PlayerPlane.transform.Rotate(new Vector3(0, 0, tempADValue * RotateSpeed * Time.deltaTime));}/// <summary>/// 这个函数是通过鼠标控制视角方向/// </summary>void ViewController(){//Input.mousePosition.xfloat RotateXValue= Input.GetAxis("Mouse X");PlayerPlane.transform.Rotate(new Vector3(0, RotateXValue * ViewRotateSpeed*Time.deltaTime,0));float RotateYValue = Input.GetAxis("Mouse Y");PlayerPlane.transform.Rotate(new Vector3(RotateYValue * ViewRotateSpeed*Time.deltaTime,0,0));}
}