0
点赞
收藏
分享

微信扫一扫

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

霸姨 2022-10-31 阅读 149


文章目录

  • ​​1、简介​​
  • ​​2、重置位置​​
  • ​​3、建立物体​​
  • ​​3.1、创建物体​​
  • ​​3.2、重置坐标​​
  • ​​3.3、修改颜色​​
  • ​​3.4、设置预制体​​
  • ​​4、创建 C# 脚本代码​​
  • ​​4.1、创建脚本​​
  • ​​4.2、应用脚本​​
  • ​​4.3、编写代码​​
  • ​​4.4、保存运行​​

1、简介

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

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

开始吧~

2、重置位置

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

  • 整体视角:保证X轴在右方,Y轴在上方,Z轴在前方。如下图
  • 草地重置:以我们上次的草地为例,把位置重新Reset。如下图
  • Unity开发(3)会移动的物体_拖拽_02

  • 草地居中:为了让草地的中心在(0,0,0)上,所以设置草地的属性如图
  • Unity开发(3)会移动的物体_c#_03

  • 摄像机:摄像机重新调整一下视角,能更好的观看整体视角。我们选中Main Camera然后选择 GameObject,然后点击 Align With View。(如果熟练了,可以按快捷键Ctrl+Shift+F)
  • Unity开发(3)会移动的物体_unity_04

3、建立物体

3.1、创建物体

创建物体组件,如图

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

3.2、重置坐标

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

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

3.3、修改颜色

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

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

3.4、设置预制体

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

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

4、创建 C# 脚本代码

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

4.1、创建脚本

  • 如图创建脚本文件
  • Unity开发(3)会移动的物体_重置_08


  • 创建时命名为 PlayerMoveByKeyAndMouse (通过键盘和鼠标移动角色),如图
  • Unity开发(3)会移动的物体_unity_09


4.2、应用脚本

拖拽脚本到物体上,使得脚本能控制物体移动。如图所示

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

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、保存运行

保存运行,大功告成




举报

相关推荐

0 条评论