Unity之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶

news2024/11/14 21:29:57

文章目录

  • **原理解释**:
  • **带注释的代码**:
  • 实际运用

在这里插入图片描述

当你需要实现物体按照指定路线行驶时,你可以通过以下步骤来实现:

原理解释

  1. 路径点:你需要定义一系列路径点,这些点将构成物体行驶的路线。每个路径点都是一个在场景中的位置,物体将会按照这些点逐步移动。

  2. 移动过程:在每一帧更新时,你需要将物体从当前位置移动到下一个路径点,直至到达最后一个路径点,完成整个路线。

带注释的代码

以下是带有详细注释的示例代码,演示了如何在Unity中实现物体按照指定路线行驶:

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

public class FollowPath : MonoBehaviour
{
    public Transform[] pathPoints;  // 存储路径点的数组
    public float speed = 5.0f;       // 物体移动速度
    private int currentPoint = 0;    // 当前要前往的路径点索引

    void Update()
    {
        // 检查是否还有路径点要前往
        if (currentPoint < pathPoints.Length)
        {
            // 获取当前目标路径点的位置
            Vector3 targetPosition = pathPoints[currentPoint].position;

            // 计算物体到目标点的方向向量
            Vector3 moveDirection = targetPosition - transform.position;

            // 移动物体,乘以 Time.deltaTime 以确保平稳移动
            transform.Translate(moveDirection.normalized * speed * Time.deltaTime);

            // 如果物体距离目标点足够近,就认为到达了目标点
            if (Vector3.Distance(transform.position, targetPosition) < 0.1f)
            {
                currentPoint++;  // 切换到下一个路径点

                // 检查是否已经到达了路径的末尾
                if (currentPoint >= pathPoints.Length)
                {
                    // 到达了路径的末尾
                    Debug.Log("Reached the end of the path.");
                }
            }
        }
    }
}

这个脚本实现了物体按照指定路径行驶的过程。在每一帧中,它检查是否还有路径点需要前往,如果有,它会计算移动的方向并进行移动。当物体距离当前路径点足够近时,它会切换到下一个路径点,直到完成整个路径。这样,物体就能够沿着指定的路径平滑地行驶。

实际运用

在这里插入图片描述
在我的unity 中,
我将写好的脚本挂在我的目标物体上
在这里插入图片描述
并在PathPoint 那里填入你想要设置的路径点的个数
(你要是想实现精准一点的话,就多设置几个,与化曲为直的原理相同)
注意物体的移动是按照你的顺序来的,所以你可以通过不同的顺序来实现不同的路径

就像我设置的一样,我设置了一个绕一圈的路径
然后就可以在Play 之后,在Game窗口看到你的杰作啦

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo

有时候我们拿到一个数据集发现是xml文件格式如下&#xff1a; <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…

纷享销客连接型CRM助力中国企业全球业务增长

近年来&#xff0c;中国企业出海热度越来越高&#xff0c;中国企业出海之路也越走越宽&#xff0c;全球化步伐明显加速。2023年&#xff0c;中国企业业务出海正进入快车道和分水岭阶段&#xff0c;中国也正在从一个世界工厂变成全球资源的整合者。 0 中国企业出海&#xff0c…

精简体积的OLED 基础驱动库 - OLED_BASIC

打算用一个存储空间不大的Arduino 芯片做点简单的文字和图形显示&#xff0c;屏幕芯片SSD1316&#xff0c;感觉u8g2 占用还是太大&#xff0c;想裁剪别人的现成代码又感觉无从下手&#xff0c;所以就基本上重写了一个OLED 显示库&#xff0c;仓库地址&#xff1a;gitee.com/etb…

SQL助你面大厂(Join家族介绍)

在学习SQL时候&#xff0c;在多表查询的时候你肯定使用过Join&#xff0c;无非就是把两表联合在一起进行多表查询&#xff0c;但是你是真的了解它们的用法么&#xff1f; Join家族一般有left Join、Rigth Join、Inner Join、Left Semi Join、Left Anti Join、Full Join为主 C…

补充1 MATLAB_GUI_修改普通按钮(PushButton)的参数创建一个长按回调按钮

目录 一、实例效果二、补充的知识点&#xff08;两种回调函数&#xff09;三、步骤  1. 先建一个空白的GUI。  2.在GUI Figure 上添加一个按钮&#xff08;PushButton&#xff09;组件&#xff0c;并设置其属性&#xff0c;例如位置、大小和文本等。  3.CtrS保存一下GUI。…

强推9个研究生必备的免费论文下载网站

一、文献党下载器 文献党下载器把庞大的中外文献数据库资源集成在一个平台&#xff0c;就是把大量的中外数据库资源整合在一个站&#xff08;目前文献资源量名列前茅&#xff09;。不论是中文还是外文文献&#xff0c;不论是哪种文献类型&#xff0c;不论是哪个学科领域该网站…

<kernel>kernel 6.4 USB-之-hub_port_connect()分析

&#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_port_connect()分析 kernel 6.4 USB系列文章如下&#xff1a; &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-hub_event()分析 &#xff1c;kernel&#xff1e;kernel 6.4 USB-之-port_event()分析 &#xff1c;kern…

全球机器传感器市场价值约为142亿美元,预计将以超过7.5%的增长率增长

机器传感器是一类用于检测、测量和感知机器环境中物理量、化学量或其他特定参数的设备。这些传感器将实际的物理现象转化为电信号或数字信号&#xff0c;以便计算机或控制系统进行处理、分析和控制。机器传感器在工业、自动化、物联网、机器人、汽车等领域有广泛应用。 根据阿…

部门来了个新同事,听说是00后,上来一顿操作给我看呆了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…

OD动态调试exe

之前一直卡&#xff0c;好不容易搞懂一点&#xff0c;记下来记下来 分析exe文件&#xff0c;用ida打开&#xff0c;找到主函数main&#xff0c;分析主函数可以发现&#xff0c;main在判断之后调用了l02等函数 因为判断部分的逻辑还是有点复杂&#xff0c;因此想让他直接打印函…

基于PaddleOCR2.7.0发布WebRest服务测试案例

基于PaddleOCR2.7.0发布WebRest服务测试案例 #WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. #警告&#xff1a;这是一个开发服务器。不要在生产部署中使用它。请改用生产WSGI服务器。 输出结果…

smartsofthelp 5.0 最专业的数据库优化工具,数据库配置优化,数据库高并发优化,SQL 语句优化...

下载地址:百度网盘 请输入提取码 SQL操作返回历史记录&#xff1a; 2023-08-21 20:42:08:220 输入&#xff1a;select version as 版本号 2023-08-21 20:42:08:223 输出&#xff1a;当前数据库实例版本号&#xff1a;Microsoft SQL Server 2012 - 11.0.2100.60 (X64) …

司徒理财:黄金美盘继续看跌,黄金原油最新走势分析及操作建议

黄金走势分析及策略      黄金上周继续回落收跌&#xff0c;周线连续第四周走低&#xff0c;而且还破了周的低点1892&#xff0c;空头力量仍占据优势&#xff0c;暗示后市仍有继续走低的动力和空间&#xff0c;日线方面&#xff0c;黄金一直是承压5日均线下行&#xff0c;是…

@Slf4j报错:Not generating field log: A field with same name already exists

错误出处&#xff1a; 错误原因&#xff1a; 同时使用了Slf4j注解以及LittlecLogger private static final LittlecLogger log LittlecLoggerFactory.getLogger(TimeTrackController.class); 修复方法&#xff1a; 将log改为LOG&#xff0c;便于区分&#xff0c;代码即用到了…

服务运营|斯坦福大学商学院Yue Hu :基于排队论的医院急诊部人员配置策略

作者&#xff1a;李舒湉&#xff0c; 陈盈鑫&#xff0c; XinW 编者按 本次解读的文章是“Prediction-Driven Surge Planning with Application in the Emergency Department”。论文第一作者是斯坦福大学商学院&#xff08;Stanford Graduate School of Business) 的Yue Hu&a…

浅谈煤矿井下电力监控系统的应用研究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;主要介绍了应用煤矿井下电力监控系统的重要意义&#xff0c;并对煤矿井下电力监控系统的主要原理和基本构成做了简要介绍&#xff0c;并从隔爆监控单元设计、通信协议设计和组态监控系统设计等方面提出了电力监…

小白到运维工程师自学之路 第七十八集 (安装Jenkins)

一、环境概述 随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集成的效率明显高于人工操作&#xf…

【考研数学】解决求解微分方程时,常数的结合问题以及是否能直接去掉绝对值的讨论

文章目录 引言例子 1例子 2总结 引言 在微分方程&#xff0c;尤其是一阶线性微分方程的求解过程中&#xff0c;经常出现求 ∫ 1 x d x \int\frac{1}{x}dx ∫x1​dx 等原函数需要加绝对值的不定积分。如果放在不定积分里&#xff0c;肯定毫不犹豫会加上绝对值&#xff0c;也就…

OpenCV 中的色彩空间 (C++ / Python)

在本教程中,我们将了解计算机视觉中使用的流行色彩空间,并将其用于基于颜色的分割。我们还将分享 C++ 和 Python 的演示代码。

在Flutter应用内部实现分屏功能

前言 这一次被要求实现屏幕上同时展示两个页面&#xff0c;并且两个页面的逻辑&#xff0c;功能互不影响&#xff0c;通俗一点讲就是在Flutter内部实现一个类似于分屏的功能&#xff0c;这可难不倒我。 方法 要在 Flutter 中实现一个屏幕的上半部分和下半部分展示不同的页面…