unity按路径移动

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowPathMove : MonoBehaviour
{
    public Transform[] wayPointArray;
    [SerializeField] private Transform PathA;//路径点的父物体
    [SerializeField]private Transform playerObj;//移动的物体
    private int index;
    private Vector3 _currentDirection;//当前角色的前进方向
    void Start()
    {
        if(playerObj==null)
        {
            Debug.LogError("请将移动的角 色放入参数栏");
        }
        //print(PathA.childCount);//获取子物体的数量
        //开辟空间
        wayPointArray = new Transform[PathA.childCount];
        for(int i=0;i<wayPointArray.Length;i++)
        {
            wayPointArray[i]=PathA.GetChild(i);//将路径点加入数组中
            //print($"wayPointArrayz{i} ={ wayPointArray[i].position }");//输出世界坐标
        }
       
    }
    


    //在Updata里面最好不要放太多东西
    void Update()
    {
        //Distance需要开方
       /* if (Vector3.Distance(wayPointArray[index].position,playerObj.position)<0.3f)
        {
            //检查是否到达最后一个目标点
            if (index < wayPointArray.Length - 1)
            { index++; }
            else
            {
                index = 0;
            }*/
           /* if (index++ == wayPointArray.Length - 1)
            {
                index = 0;
            }*/
       // }
        //返回距离的平方值
       // Vector3 _currentDirection = wayPointArray[index].position - playerObj.position;

        //开启协程,每隔1秒钟算10次0.11.5
        StartCoroutine(RotationDirectionByTime(1.5f));

        //角色一直前进
        playerObj.Translate(Vector3.forward * 8f * Time.deltaTime);
    }

    IEnumerator RotationDirectionByTime(float time)
    {
        while (true)
        {

            //写算法来改变角色前进的方向
            //计算角色与目标点之间的向量
           Vector3 _currentDirection = wayPointArray[index].position - playerObj.position;
            if (_currentDirection.sqrMagnitude <= 0.2f)
            {
                index += 1;
                if (index == wayPointArray.Length )
                {
                    index = 0;
                }
            }
            Debug.Log("输出数组坐标:" + index);
            //计算旋转角度(没有旋转的过程)
            // playerObj.LookAt(direction);
            //差值运算能够看到他的过程,球形差值
            //出现抖动是因为这里每一帧出来的值都不一样,所以需要用协程控制一下
            playerObj.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(_currentDirection), 0.9f);
            //计算旋转角度(没有旋转的过程)
            
            //print(_currentDirection.sqrMagnitude);
            yield return new WaitForSeconds(time);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/530330.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习 在服务器上使用bypy直接下载百度云盘的资源。

参考&#xff1a;bypy 具体步骤 step1&#xff1a; pip install bypystep2&#xff1a; bypy info第一次输入该命令&#xff0c; 点击进入网址&#xff0c;点击登陆后&#xff0c;获取token&#xff08;10分钟内有效&#xff09;&#xff0c;然后输入到命令行&#xff1a;…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第二套

华为海思校园招聘-芯片-数字 IC 方向 题目分享(共9套&#xff0c;有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;——第二套&#xff08;共九套&#xff0c;每套四十个选择题&#xff09; 部分题目分享&#xff0c;完整版获取&am…

真实世界的映照-DDD实体

什么是实体&#xff1f; 实体&#xff0c;官方的解释是&#xff1a;实体&#xff08;Entity&#xff0c;又称为Reference Object&#xff09;很多对象不是通过他们的属性定义的&#xff0c;而是通过一连串的连续事件和标识定义的。主要由标识定义的对象被称为ENTITY。 但&…

人工智能——机器学习概述

1. 人工智能 1.1. 概念 人工智能(Artificial Intelligence&#xff0c;AI)&#xff0c;是新一轮科技革命和产业变革的重要驱动力量&#xff0c; [26]是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组…

ChromeDriver / Selenium-server

一、简介 ChromeDriver 是一个 WebDriver 的实现&#xff0c;专门用于自动化控制 Google Chrome 浏览器。以下是关于 ChromeDriver 的详细说明&#xff1a; 定义与作用&#xff1a; ChromeDriver 是一个独立的服务器程序&#xff0c;作为客户端库与 Google Chrome 浏览…

GFS部署实验---gfs9.6版本---网络源安装

目录 1、部署环境 2、更改节点名称 3、准备环境 4、做主机映射--/etc/hosts/ 5、yum网络源直接安装客户端软件 1.安装公网源 2.安装服务 3.开启服务 6、添加节点到存储信任池中 7、创建卷 1、创建数据目录 2、创建分布式卷 3、创建复制卷 4、创建分布式复制卷 5、…

每天五分钟深度学习:如何理解逻辑回归算法的假设函数?

本文重点 我们在机器学习专栏中已经学习了逻辑回归算法,本次课程我们将重温逻辑回归算法,该算法适用于二分类的问题,本文主要介绍逻辑回归的假设函数。我们在学习线性回归算法的时候,我们已经知道了线性回归算法的假设hθ(x)=θTX(参数θ的转置*X),但是对于逻辑回归而言…

GEE:基于GEDI-4A 级(L4A)数据和机器学习方法预测地上生物量密度(AGBD;单位为 Mg/ha)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上使用GEDI-4A 级(L4A)数据和机器学习方法预测地上生物量密度(AGBD;单位为 Mg/ha)的方法和代码。 代码包括(1) Landsat 和 GEDI 影像预处理;(2)特征变量(光学/雷达/时序/纹理/物候/地表温度/主…

「44」直播间换脸,揭开神秘的面纱……

「44」换脸神器 让你瞬间秒变「明星脸」带货 DeepFace是Facebook的人脸识别系统之一&#xff0c;旨在在照片和视频中准确识别和标识人脸。它使用深度学习和神经网络技术来进行高度精确的人脸匹配和验证。 DeepFace利用了大量的训练数据和先进的人脸识别算法&#xff0c;能够…

Jmeter02-2:参数化组件其他方式

0、Jmeter组件&#xff1a;参数化概述 0.1 是什么&#xff1f; 参数化是动态的获取并设置数据 0.2 为什么&#xff1f; 比如执行批量操作时&#xff0c;批量插入或批量删除&#xff0c;之前数据都是手写的&#xff0c;每执行完都要修改一次&#xff0c;效率太低 而参数化就是…

监控指标体系:交互延迟上的探索与最佳实践

FID 在互联网高速发展的时代,用户体验已成为企业竞争的关键所在。网页性能作为用户体验的重要组成部分,直接影响着用户的满意度和工作效率。First Input Delay(FID)作为衡量网页性能的重要指标,越来越受到业界关注。今天,让我们一起来深入了解FID,探讨如何优化FID以提升…

Verilog实现手表计时

实现手表的计时功能&#xff1a; 1.具有start启动信号、pause暂停信号&#xff0c;可以自定义其触发机制。 2.具有时间更改接口&#xff0c;可以更改时、分、秒。 3.输出时、分、秒。 Verilog设计 模块端口定义&#xff1a; module watch1(input wire clk …

蓝桥杯加训

1.两只塔姆沃斯牛&#xff08;模拟&#xff09; 思路&#xff1a;人和牛都记录三个数据&#xff0c;当前坐标和走的方向&#xff0c;如果人和牛的坐标和方向走重复了&#xff0c;那就说明一直在绕圈圈&#xff0c;无解 #include<iostream> using namespace std; const i…

软考高级架构师:TCP/IP 协议 和 OSI 七层模型

一、AI 讲解 TCP/IP 协议族是一组计算机网络通信协议的集合&#xff0c;其中TCP和IP是两个核心协议。TCP/IP 协议族通常被用来参照互联网的基础通信架构。与之相对的OSI七层模型&#xff0c;是一个更为理论化的网络通信模型&#xff0c;它将网络通信分为七个层次。 TCP/IP 与…

LeetCode 289.生命游戏————2024 春招冲刺百题计划

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &am…

【攻防世界】题目名称-文件包含

看到 include()&#xff0c;想到文件包含&#xff0c;用php伪协议。 知识点 看到 include()&#xff0c;require()&#xff0c;include_once()&#xff0c;require_once() &#xff0c;想到文件包含&#xff0c;用php伪协议 ?filenamephp://filter/readconvert.base64-encode/…

4.9java学习总结

常用API(了解即可,用到了再回来看) API(工具类):已经打包好我们可以根据他提供的格式直接用就好(很像函数) API都可以通过 类名.方法名 进行调用. Math Math类包用于常用的基本数学运算的方法. System: System类包提供了一些与系统相关的方法 Runtime: Runtime类包提供方…

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-01-软件可靠性基本概念

文章目录 1. 软件可靠性的概述1.1 定义1.1.1 规定的时间1.1.2 规定的条件1.1.3 所要求的功能 1.2 定义的特点和意义1.3 注意点 2. 软件可靠性的定量描述2.1 规定时间2.1.1 自然时间2.1.2 运行时间执行时间 2.2 失效概率 F(t)2.3 可靠度 R(t)2.4 失效强度 f(t)2.5 平均失效前时间…

modelsim 仿真bmp图片实现RGB_YCrCb

用modelsim_se软件仿真bmp图片&#xff0c;可在modesim中实现一些图片处理算法和查看效果 本文以最简单的仿真一副bmp图像为例&#xff0c;实现RGB_YCrCb的modelsim仿真,带源工程 1、先在本地建立文件夹 2、首先打开moselsim 3、新建库和新建项目&#xff0c;保存到建立的文件…

Android音视频的基础

视频是什么&#xff1f; 视频就是由一系列图片构成的。 视频帧 帧&#xff0c;是视频的一个基本概念&#xff0c;表示一张画面&#xff0c;如上面的翻页动画书中的一页&#xff0c;就是一帧。一个视频就是由许许多多帧组成的。 帧率 帧率&#xff0c;即单位时间内帧的数量&a…