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

这篇具有很好参考价值的文章主要介绍了Unity之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

原理解释:

  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之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶,Unity,unity,游戏引擎
在我的unity 中,
我将写好的脚本挂在我的目标物体上
Unity之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶,Unity,unity,游戏引擎
并在PathPoint 那里填入你想要设置的路径点的个数
(你要是想实现精准一点的话,就多设置几个,与化曲为直的原理相同)
注意物体的移动是按照你的顺序来的,所以你可以通过不同的顺序来实现不同的路径

就像我设置的一样,我设置了一个绕一圈的路径
然后就可以在Play 之后,在Game窗口看到你的杰作啦文章来源地址https://www.toymoban.com/news/detail-665153.html

到了这里,关于Unity之用Transform 数组加多个空物体-->简单地控制物体按照指定路线自动行驶的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 之transform.LookAt() 调整一个物体的旋转,使其朝向指定的位置

    transform.LookAt 是 Unity 引擎中 Transform 组件的一个方法,用于调整一个物体的旋转,使其朝向指定的位置。通常情况下,它被用来使一个物体(如摄像机、玩家角色等)朝向另一个物体、位置或方向。以下是关于 transform.LookAt 方法的详细介绍: 方法签名: 参数说明: target :要

    2024年02月09日
    浏览(50)
  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(89)
  • Unity 给物体添加多个标签(有源码)

    为了弥补Unity Tag只能添加一个标签的缺陷,特地写了一个组件Tag,和一个库TagManager用于控制与管理组件Tag。组件与库在同一个仓库内,仓库的下载地址会放在下面,可以自行下载并添加到项目中。就当作普通的脚本使用即可。 这个库简单易用,哪怕你是新手也可以轻松驾驭

    2023年04月27日
    浏览(65)
  • Unity切割图片:把一张图片中的物体裁成多个单独的游戏物体

    首先选中需要切割的图片素材,将Inspector面板中的 Sprite Mode 由默认的 Single改为Multiple ; 然后点击 Sprite Editor ; 第一步之后便会弹出下例面板,然后 点击Slice菜单 ,继续点击,便 会自动被分割好 ,最后 点击右上角的Apply 。 点击Apply后在右下角会弹出一个小的面板,你可以

    2024年02月05日
    浏览(42)
  • Unity单个物体绑定多个相机在轨道上移动,录制不同角度视频

    打开包管理器 下载cinemachine插件 使用dolly track 创建轨道 右侧可以删减关键点,注意调整y坐标 把前面的轨道拖到path中,注意这里的 speed要设定不为0才会动 根据需求设定,Follow这个设为cart才跟着走(Dolly Enable勾上),Look At设定为Cart才会让相机跟着轨迹的变化视角转换(设定

    2024年04月15日
    浏览(75)
  • Unity 控制物体移动

    目录 1、通过改变物体的位置使物体移动 2、通过给物体施加力使物体移动 3、移动characterController以及碰撞检测 一、相关代码展示 1、通过改变物体的位置使物体移动 2、通过给物体施加力使物体移动 3、移动characterController 以及碰撞检测 注:使用时首先要给物体添加CharacterC

    2024年02月13日
    浏览(47)
  • Unity中用代码控制物体透明度(物体闪烁简易版)

    之前看了很多文章,有些文章对于只是想简单使用代码控制物体透明度的小伙伴不是很友好,比如我。所以研究了半天找到了很简单的一个方法,在这里分享给初入门想用的小白,希望能给你们带来帮助,同时给自己当作笔记记录一下。      

    2024年02月08日
    浏览(43)
  • 【C语言】中,输入一个数组,实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。 首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。 然后用for循环来输入这个数组中的各个数字。 接下来,就是对这个数组中的数字进

    2024年02月08日
    浏览(49)
  • unity多个物体多种材质切换效果实现方法(方法比较笨,还有不足之处多多指导)

    多种材质切换:获取物体的MeshRenderer组件上所有的材质球,并将其存放到数组中;创建另一个数组存放需要新材质球,通过循环遍历将将需要替换的材质球存放在创建好的数组内。 比如说同时给象棋的棋盘和棋子切换不同材质,具体步骤如下: 1.分别导入棋盘、棋子模型;黑

    2024年02月17日
    浏览(50)
  • 【Unity入门】11.脚本控制物体旋转

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (1)创建RotateLogic脚本     上一篇文章我们学习了如何在脚本中获取物体对象,并使用transform组件下的translate接口使物体运动     今天我们进一步学习,用脚本控制物体的旋转。首先

    2024年02月04日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包