当前位置: 首页 > article >正文

unity3d————游戏对象随机位置移动

1.首先我们需要在游戏先创建一个坦克预设体,然后 我们思路就是 声明位置数组 然后数组中的每一个元素都包含 位置 信息类 比如:public Transform[] randomPos  对于这个数组  我们可以在外面创建空位置  然后把位置拖到  数组里面就行了  多少个位置由我们决定

2.然后我们需要一个函数来实现这个功能,代码如下:

 //产生随机点
    private void RandPos()
    {
        if (randomPos.Length == 0)
            return;

        targetPos = randomPos[Random.Range(0, randomPos.Length)];
    }
  1. 方法定义
    • private void RandPos():定义了一个名为RandPos的私有方法,该方法没有返回值(void)也不接受任何参数。
  2. 检查随机点数组
    • if (randomPos.Length == 0) return;:这行代码检查randomPos数组的长度是否为0。如果是,说明数组中没有可用的随机点,因此方法直接返回,不执行后续代码。这是一种防御性编程的做法,用于确保在数组为空时不会尝试访问其元素,从而避免引发错误。
  3. 选取随机点
    • targetPos = randomPos[Random.Range(0, randomPos.Length)];:这行代码执行了两个主要操作:
      • Random.Range(0, randomPos.Length):使用Random.Range方法生成一个介于0(包含)和randomPos.Length(不包含)之间的随机整数。这个整数将作为数组索引来选取一个随机点。
      • randomPos[...]:使用上一步生成的随机整数作为索引,从randomPos数组中选取对应的元素(即一个随机点)。
    • 最后,选取的随机点被赋值给targetPos变量。这样,targetPos就包含了一个新的随机位置,后续代码可以使用这个位置来控制对象的移动或朝向。
综上所述,RandPos方法的作用是从randomPos数组中随机选取一个点,并将这个点设置为目标位置(targetPos)。这种方法在游戏开发中很常见,可以用于实现对象的随机移动、敌人的随机巡逻路径、玩家的随机出生点等功能。

3.在start 生命周期函数调用 RandPos();  随机生成 一个目标位置 targetPos 加下来上代码:

 void Update()
    {
        this.transform.LookAt(targetPos);
        this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

        //判断2点距离 接近时候 就随机切换位置
        if (Vector3.Distance(this.transform.position, targetPos.position) < 0.05f)
        {
            RandPos();
        }
    }
  1. void Update() 方法
    • Update() 是Unity中的一个特殊方法,它会在每一帧被自动调用。这意味着Unity引擎会不断地执行Update()方法中的内容,直到游戏结束或对象被销毁。
  2. this.transform.LookAt(targetPos);
    • 这行代码使当前对象(this)朝向targetPos这个目标位置。transform是Unity中用于管理对象位置、旋转和缩放等属性的组件。LookAt方法会根据目标位置自动计算并设置对象的旋转,使得对象“看向”目标位置。
  3. this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
    • 这行代码使对象沿着其前方(Vector3.forward)移动。moveSpeed是对象的移动速度,Time.deltaTime是上一帧到当前帧的时间间隔。将这三者相乘,可以确保对象的移动是平滑且帧率无关的,即无论游戏运行的帧率如何,对象的移动速度都保持一致。
  4. 距离判断与随机位置切换
    • if (Vector3.Distance(this.transform.position, targetPos.position) < 0.05f):这行代码判断当前对象与目标位置之间的距离是否小于0.05f(这个值可以根据需要调整)。如果是,说明对象已经接近目标位置。
    • RandPos();:当对象接近目标位置时,调用RandPos()方法。这个方法的具体实现没有在代码片段中给出,但从上下文来看,它的作用很可能是随机生成一个新的位置,并将这个位置赋值给targetPos,从而实现对象位置的随机切换。

综上所述,这段代码实现了一个简单的游戏逻辑:对象会自动朝向并移动向一个目标位置,当接近这个目标位置时,会随机切换到一个新的目标位置,然后继续朝向并移动向新的目标位置。这种逻辑可以用于制作各种游戏效果,比如敌人的巡逻行为、玩家的随机移动等。


http://www.kler.cn/a/378448.html

相关文章:

  • 已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
  • Vehicle OS软件平台解决方案
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day8
  • 浅谈UI自动化
  • 基于Openwrt系统架构,实现应用与驱动的实例。
  • gradlew.cmd的使用
  • 力扣每日一题 3211. 生成不含相邻零的二进制字符串
  • 使用Conda环境为Jupyter添加内核
  • [HTML]-基础标记:列表/标题/引用/表格/嵌入网页/图片/视频等
  • 力扣题目解析--罗马数字转整型
  • 一次明白——Vue.js组件开发!
  • Kubernetes运行大数据组件-运行spark
  • element plus中修改el-table的样式
  • JAVA语言多态和动态语言实现原理
  • 深度学习:反向传播算法简介
  • 一体化运维监控管理平台详解:构建高效运维体系
  • 如何通过OpenAI Gym学习强化学习
  • 乡村景区一体化系统(门票,餐饮,便利店,果园,娱乐,停车收费
  • 两个壁面之间夹一个圆柱形杆的温度分布
  • LeetCode 684.冗余连接:拓扑排序+哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n)))
  • 使用GetX实现GetPage中间件
  • WordPress在windows下安装
  • 【Git】从 GitHub 仓库中移除误提交的 IntelliJ IDEA 配置文件夹 .idea 并将其添加到 .gitignore 文件中
  • MyBatis-Plus快速入门:从安装到第一个Demo
  • React Native 0.76 重大更新:新架构全面启用
  • 基于Python的自然语言处理系列(47):DistilBERT:更小、更快、更省、更轻的BERT版本