说明
将脚本挂载至物体上即可使用
该脚本用于控制物体的前后移动、左右旋转
3D
以z轴为前进方向
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
//速度:每秒移动5个单位长度
public float moveSpeed = 5;
//角速度:每秒旋转135度
public float angularSpeed = 135;
void FixedUpdate()
{
Move();
}
void Move()
{
//获取竖直、水平轴的值,范围在-1到1
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
//按照矢量移动一段距离
transform.Translate(Vector3.forward * v * Time.deltaTime * moveSpeed);
//按照矢量进行一次旋转
//这将改变transform组件中旋转字段的y值,y值控制以y为旋转轴,从z轴出发的旋转的角度
transform.Rotate(Vector3.up * h * Time.deltaTime * angularSpeed);
}
}
解析
1. FixUpdate
控制函数在FixUpdate里执行,每0.02s秒执行一次,1秒执行50次
2. 按键控制
获取垂直轴的值
Input.GetAxis("Vertical");
获取水平轴的值
Input.GetAxis("Horizontal");
范围均为-1~1,按下WS、AD键可以分别改变垂直轴、水平轴的值
3. 向量
Vector3.forward是(0,0,1)
Vector3.up是(0,1,0)
4.transform组件及其函数
transform.Translate 按照所给矢量移动一段距离
transform.Rotate 按照矢量进行一次旋转
这将改变transform组件中旋转字段的y值,y值控制以y为旋转轴,从z轴出发的旋转的角度
2D
以y轴为前进方向
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
//速度:每秒移动5个单位长度
public float moveSpeed = 5;
//角速度:每秒旋转135度
public float angularSpeed = 135;
void FixedUpdate()
{
Move();
}
void Move()
{
//获取竖直、水平轴的值,范围在-1到1
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
//按照矢量移动一段距离
transform.Translate(Vector2.up * v * Time.deltaTime * moveSpeed);
//按照矢量进行一次旋转
//这将改变transform组件中旋转字段的z值,z值控制以z为旋转轴,从x轴出发的逆时针旋转的角度
transform.Rotate(Vector3.forward * h * Time.deltaTime * angularSpeed);
}
}