欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

经典代码:坦克巡逻 学习笔记

程序员文章站 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,可以直接在数组中取。

相关标签: 学习日志