前文:https://blog.csdn.net/Jaihk662/article/details/86750789(Transform组件)
https://blog.csdn.net/Jaihk662/article/details/86751535(获取鼠标键盘输入)
PS:注释和讲解部分在代码中
一、利用Transform组件移动物体
脚本程序步骤:
①实例化Transform对象,并通过 gameObject.GetComponent<T> () 获取相应对象的引用
②利用 Transform.Translate(Vector3, Space) 方法移动物体的位置,函数含义:游戏物体以"Space"坐标系往Vector3方向移动
相关参数:
Vector3.xxx:结构体;用来表示向量,例如:vector3.forward:向前方移动1m,vector3.forward*0.5:向前方移动50cm
Space.xxx:枚举类;Space.Self 表示物体自身的坐标系,Space.World 表示物体所在的世界坐标系
备注:脚本是游戏物体的一部分,一般控制谁的脚本就挂载在谁的身上
(图片引用于擅码网)
二、利用'W', 'A', 'S', 'D'移动物体
了解上面的API后,就很容易解决这个问题了
新建C#脚本,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Text1: MonoBehaviour
{
//因为Start()只会在开始游戏时被执行一次,所以一般都用来初始化
private Transform myTransform; //实例化Transform对象
void Start()
{
Debug.Log("Start"); //输出调试
myTransform = gameObject.GetComponent<Transform> (); //获取相应对象的引用
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
{
Debug.Log("W键按下,向前移动");
myTransform.Translate(Vector3.forward, Space.Self);
}
if (Input.GetKeyDown(KeyCode.A))
{
Debug.Log("A键按下,向左移动");
myTransform.Translate(Vector3.left, Space.Self);
}
if (Input.GetKeyDown(KeyCode.S))
{
Debug.Log("S键按下,向后移动");
myTransform.Translate(Vector3.back, Space.Self);
}
if (Input.GetKeyDown(KeyCode.D))
{
Debug.Log("D键按下,向右移动");
myTransform.Translate(Vector3.right, Space.Self);
}
}
}
将其拖到对应的物体上即可,效果如下: