教程相关资源 | Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip |
1.1 控制物体的运动
1.1.1 新建脚本
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-1.png)
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-2.png)
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-3.png)
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-4.png)
小提示创建脚本组件的注意事项Unity 规定,能够挂载到物体上的脚本文件必须是 “ 脚本组件 ” (另有一种不是组件的脚本文件),脚本组件要继承自 MonoBehaviour ,且脚本代码中的 class 名称必须与文件名一致。一般脚本创建时会自动生成这部分内容,但是如果修改了脚本文件名,那么在挂载时就会报错。这时就必须修改文件名或 class 名称,让它们一致,这样才能正确挂载。 Unity 支持一个物体挂载多个同样的脚本组件,但一般来说只需要一个。如果由于操作失误挂载了多个脚本组件,就要删除多余的,这也是建议把脚本文件拖曳到 Inspector 窗口内的原因,这样易于确认是否挂载了多个脚本组件。
1.1.2 Start和Update事件
using UnityEngine;
public class Ball : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
using UnityEngine;
public class Ball : MonoBehaviour
{
// Use this for initialization
void Start()
{
Debug.Log("组件执行开始函数!");
}
// Update is called once per frame
void Update()
{
Debug.Log("当前游戏进行时间:" + Time.time);
}
}
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-5.png)
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-6.png)
1.1.3 修改物体位置
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-7.png)
// 物体将沿着自身的右侧方向(X轴正方向也称为向右)前进1.5个单位
transform.Translate(1.5f, 0, 0);
void Start () {
transform.position = new Vector3(1, 2.5f, 3);
}
void Update()
{
transform.Translate(0, 0, 0.1f);
// 在这个例子中等价于:
transform.position += new Vector3(0, 0, 0.1f);
}
小提示物体位置的两种写法有本质区别如果深究,这里有两个要点:一是向量的使用和向量加法,二是局部坐标系与世界坐标系之间的区别和联系。Translate() 函数默认为局部坐标系,而修改 position 的方法是世界坐标系。 3D 数学基础知识会在后续章节详细说明,这里先把关注点放在位移逻辑上。
transform.Translate(0, 0, 5 * Time.deltaTime);
// 或
transform.position += new Vector3(0, 0, 5 * Time.deltaTime);
}
1.1.4 读取和处理输入
void Update()
{
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
Debug.Log("当前输入纵向:" + v + " " + "横向:" + h);
}
void Update()
{
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
Debug.Log("当前输入纵向:" + v + " " + "横向:" + h);
transform.Translate(h * 10 * Time.deltaTime, 0, v * 10 * Time.deltaTime);
}
1.1.5 实例:实现一个移动的小球
using UnityEngine;
public class Ball : MonoBehaviour
{
public float speed = 10;
void Start()
{
}
void Update()
{
float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
transform.Translate(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime);
}
}
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-8.png)
transform.Translate(h*speed*Time.deltaTime,
v*speed*Time.deltaTime, 0);
![Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动,Unity 3D,游戏开发,Unity 3D游戏开发+脚本编程完整指南,unity,3d,游戏引擎](https://imgs.yssmx.com/Uploads/2024/02/832828-9.png)
教程相关资源 | Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip |
文章来源地址https://www.toymoban.com/news/detail-832828.html
文章来源:https://www.toymoban.com/news/detail-832828.html
到了这里,关于Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!