经典代码:坦克巡逻 学习笔记
程序员文章站
2022-03-04 21:40:04
...
/// Coder : LF 苦瓜
/// Description :
///
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMoveScr05 : MonoBehaviour
{
// 拿到4个点的位置
public Transform[] Points;
// 将要移动的目的点
Transform target;
//下标
int index = 0;
void Start ()
{
//给 cube 附一个初始值
target = Points [index];
}
void Update ()
{
// transform.LookAt (target);
// 计算将要方向
Vector3 dir = target.position - transform.position;
// 计算出将要旋转的四元数
Quaternion q = Quaternion.LookRotation (dir);
// 将四元数赋值给rotation
// transform.rotation = q;
transform.rotation = Quaternion.Lerp (transform.rotation, q, Time.deltaTime);
if (Quaternion.Angle (transform.rotation, q) > 2f) {
return;
} else {
transform.rotation = q;
}
// 插值移动
transform.position = Vector3.Lerp (transform.position, target.position, Time.deltaTime);
if (Vector3.Distance (transform.position, target.position) < 0.1f) {
index = (++index) % Points.Length;
target = Points [index];
}
}
}
知识点:1.创建数组或集合接收游戏中物体,并使用下标来操作这些物体的思想。
2.Quaternion的概念和使用。如使用Quaternion的Quaternion q = Quaternion.LookRotation (dir);来将方向来转化为四元数;Quaternion.Lerp的使用;以及使用Quaternion.angel来求两个Quaternion的夹角。
3.线性插值Lerp的使用。
4.Vector3.Distance方法。
5.使用return来控制流程的方法。
6.使用取余来循环操作集合或数组的方法。
备注:感觉不必设置target,可以直接在数组中取。
上一篇: Socket通信基本示例
推荐阅读
-
韩顺平_PHP软件工程师玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理
-
韩顺平_PHP软件工程师玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理
-
学习drag and drop js实现代码经典之作_javascript技巧
-
smarty学习笔记之常见代码段用法总结
-
ASP.NET:一段比较经典的多线程学习代码
-
Java语言Consistent Hash算法学习笔记(代码示例)
-
Java语言Consistent Hash算法学习笔记(代码示例)
-
Android学习笔记--Activity中使用Intent传值示例代码
-
Android学习笔记--通过Application传递数据代码示例
-
Android学习笔记--使用剪切板在Activity中传值示例代码