01、简单控制
一、物体移动
法1:
void Update () { //transform:(转换)Translate:(平移)Input.GetAxis:(获得轴输入) Horizontal:(水平轴)Vertical:(垂直轴) transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, Input.GetAxis("Vertical") * Time.deltaTime * 5); } //Time.deltaTime(使物体匀速):如果不乘以Time.deltaTime则以每帧为单位进行旋转,如果乘以Time.deltaTime则以每秒为单位
其中:
void Update () { //物体方向以摄像机坐标为准 transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform); } void Update () { //物体方向以世界坐标为准,其中Space.Self以本地(物体)坐标为准 transform.Translate(Vector3.forward * Time.deltaTime,Space.World); }
法2:
void Update () { if (Input.GetKey(KeyCode.W))//GetKey(获取键盘输入)KeyCode(键码) { transform.Translate(Vector3.forward * Time.deltaTime * 5); } if (Input.GetKey(KeyCode.S)) { transform.Translate(0, 0, -Time.deltaTime * 5);//三个参数对应于(在X抽上左右移动,在Y轴上上下移动,在Z轴上前后移动) } if (Input.GetButton("Jump")) { transform.Translate(Vector3.up * Time.deltaTime * 5); } }
注:Translate后接Vector3三维矢量不需要添加三个参数。GetButton:后面加双引号直接输入按键名称的字符串,而GetKey则是输入字符码。(GetButton:点住鼠标不放,代码会持续运行;GetButtondown:点一次代码运行一次;GetButtonUp:放开鼠标才会执行)
二、物体的旋转
float rotateSpeed = 50f; void Update () { if (Input.GetButton("Fire2")) { transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed); } if (Input.GetButton("Fire1")) { transform.Rotate(Time.deltaTime * rotateSpeed, 0, 0); } }
三、限制移动范围
void Update () { if (transform.position.x > -4 && transform.position.x < 4) { transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, 0); } if (transform.position.x < -4) { transform.Translate(Time.deltaTime * 5, 0, 0); } if (transform.position.x > 4) { transform.Translate(-Time.deltaTime * 5, 0, 0); } }