Unity开发(3)会移动的物体

1、简介

上一篇文章中已经讲述了如何建立一个草地,那接下来这一章要讲如何让一个物体在我们的草地上移动起来。先看一下动态效果吧(动态图片)
在这里插入图片描述

开始吧~

2、重置位置

为了方便我们更快的找到物体,也为了写代码时方便,我们先把位置设置正确。

  • 整体视角:保证X轴在右方,Y轴在上方,Z轴在前方。如下图

  • 草地重置:以我们上次的草地为例,把位置重新Reset。如下图
    在这里插入图片描述

  • 草地居中:为了让草地的中心在(0,0,0)上,所以设置草地的属性如图
    在这里插入图片描述

  • 摄像机:摄像机重新调整一下视角,能更好的观看整体视角。我们选中Main Camera然后选择 GameObject,然后点击 Align With View。(如果熟练了,可以按快捷键Ctrl+Shift+F)
    在这里插入图片描述

3、建立物体

3.1、创建物体

创建物体组件,如图

在这里插入图片描述

3.2、重置坐标

先将Cube Reset,然后我们观察小方块有一半跑到地面下去了。再调整一下他的坐标,如图

在这里插入图片描述

3.3、修改颜色

小立方体默认很丑,先修改一下它的颜色,增加一个材质,将物体染色。

  • 先创建材质球,如图操作
    在这里插入图片描述
  • 再将材质球的模块重命名,然后选择一个颜色,如图
    在这里插入图片描述
  • 将材质球拖拽到Cube物体上,立方体就被染色成功了,如图
    在这里插入图片描述

3.4、设置预制体

角色模型一般为预制体。因此创建一个预制体的模块(文件夹),并把Cube物体拖拽进去,成功后Cube会变色,如图

在这里插入图片描述

4、创建 C# 脚本代码

为了让物体动起来,我们先创建一个 C# 脚本来控制物体移动吧

4.1、创建脚本

  • 如图创建脚本文件
    在这里插入图片描述
  • 创建时命名为 PlayerMoveByKeyAndMouse (通过键盘和鼠标移动角色),如图
    在这里插入图片描述

4.2、应用脚本

拖拽脚本到物体上,使得脚本能控制物体移动。如图所示
在这里插入图片描述

4.3、编写代码

代码我已经写好了,可以参考 或者 直接拷贝。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 沙师弟专栏 教学代码 - Unity开发(3)会移动的物体
public class PlayerMoveByKeyAndMouse : MonoBehaviour
{
    private Transform m_Transform;

    // Start is called before the first frame update
    void Start()
    {
        // 获取组件
        m_Transform = gameObject.GetComponent<Transform>();
    }

    // Update is called once per frame
    void Update()
    {
        // 通过键盘控制
        // 移动
        if (Input.GetKey(KeyCode.W))
        {
            m_Transform.Translate(Vector3.forward * 0.1f, Space.Self);
        }
        if (Input.GetKey(KeyCode.S))
        {
            m_Transform.Translate(Vector3.back * 0.1f, Space.Self);
        }
        if (Input.GetKey(KeyCode.A))
        {
            m_Transform.Translate(Vector3.left * 0.1f, Space.Self);
        }
        if (Input.GetKey(KeyCode.D))
        {
            m_Transform.Translate(Vector3.right * 0.1f, Space.Self);
        }
        // 旋转
        if (Input.GetKey(KeyCode.E))
        {
            m_Transform.Rotate(Vector3.up, 1.0f);
        }
        if (Input.GetKey(KeyCode.Q))
        {
            m_Transform.Rotate(Vector3.up, -1.0f);
        }
    }
}

4.4、保存运行

保存运行,大功告成

©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页