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、保存运行
保存运行,大功告成