Unity3D基础10:利用Transform组件移动物体

 

前文:https://blog.csdn.net/Jaihk662/article/details/86750789(Transform组件)

https://blog.csdn.net/Jaihk662/article/details/86751535(获取鼠标键盘输入)

PS:注释和讲解部分在代码中

一、利用Transform组件移动物体

脚本程序步骤:

①实例化Transform对象,并通过 gameObject.GetComponent () 获取相应对象的引用

②利用 Transform.Translate(Vector3, Space) 方法移动物体的位置,函数含义:游戏物体以"Space"坐标系往Vector3方向移动

相关参数:

Vector3.xxx:结构体;用来表示向量,例如:vector3.forward:向前方移动1m,vector3.forward*0.5:向前方移动50cm

Space.xxx:枚举类;Space.Self 表示物体自身的坐标系,Space.World 表示物体所在的世界坐标系


备注:脚本是游戏物体的一部分,一般控制谁的脚本就挂载在谁的身上

 

Unity3D基础10:利用Transform组件移动物体_第1张图片

(图片引用于擅码网)

 

二、利用'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 ();        //获取相应对象的引用
    }
    // 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);
        }
    }
}

将其拖到对应的物体上即可,效果如下:

Unity3D基础10:利用Transform组件移动物体_第2张图片

 

你可能感兴趣的:(☆游戏开发☆,Unity3D)