创建立方体,编写脚本实现使用键盘控制 立方体的移动、旋转,鼠标控制立方体旋转
1. 新建一个场景
2. 新建几何体
新建一个平面用于参考。
新建一个立方体
3. 创建脚本
创建脚本方法1:
直接在资源中创建:
从菜单栏创建
从项目视图的资源文件夹中创建
创建成功
创建方法2
在检查器中创建
在检查器中新建一个脚本并命名,这样脚本直接就挂载在立方体对象上了。
创建成功,可以在资源文件夹中看到
4. 查看脚本
单击资源文件夹中的脚本,即可在检查器中查看脚本
5. 编写脚本
为cs文件设置默认打开方式(我使用的sublime text),然后在资源文件夹中双击脚本即可在编辑器中打开
编辑脚本实现功能:
从物体角度,通过键盘按键 WSAD 前后左右移动立方体cube
从物体角度,通过键盘按键 QE 上、左 旋转立方体cube
从摄像机角度,通过鼠标左键 旋转立方体
运行效果:
原本:
移动、旋转之后:
6. 源码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
Vector3 mPrevPos = Vector3.zero;
Vector3 mPosDelta = Vector3.zero;
void Start()
{
}
private void Update()
{
float ws = Input.GetAxis("Vertical"); //按‘W’'S'键返回一个[-1,1]的值
float ad = Input.GetAxis("Horizontal"); //按‘A’'D'键返回一个[-1,1]的值
this.transform.Translate(Vector3.forward * ws * Time.deltaTime * 7,Space.Self); //前后移动
transform.Translate(Vector3.left * ad * Time.deltaTime * 7,Space.Self); //左右移动
if(Input.GetKey(KeyCode.Q)) //按下Q
{
transform.Rotate(Vector3.up,1.0f,Space.Self); //前后旋转
}
if(Input.GetKey(KeyCode.E)) //按下E
{
transform.Rotate(Vector3.left,1.0f,Space.Self); //左右旋转
}
if (Input.GetMouseButton(0)) //按下鼠标左键
{
mPosDelta = Input.mousePosition - mPrevPos;
transform.Rotate(Camera.main.transform.up, -mPosDelta.x, Space.World);
transform.Rotate(Camera.main.transform.right, mPosDelta.y, Space.World);
//在指定坐标系(参数3,世界坐标系)中,对象绕指定向量(参数1),旋转指定角度(参数2)
//transform.up 在世界坐标系中的上方向。要搭配使用Space.Word
//此方法解决了摄像机反向拍摄场景时,旋转坐标系不合理的问题
}
mPrevPos = Input.mousePosition;
}
}