unity3D学习【功能实现】之十三:简单式的理解协程和做下巡逻

本文介绍了Unity3D中如何利用协程实现简单的巡逻功能。通过一个for循环示例,展示了如何在3秒间隔后依次打印出“打1条狗”、“打2条狗”和“打3条狗”。接着,详细讲解了巡逻路径的设定,以及协程在移动到目标位置过程中的作用,涉及到协程的嵌套和无限循环。同时,提供了关键代码段,包括StartCoroutine的使用和不同yield return指令的应用场景。
摘要由CSDN通过智能技术生成

这里写图片描述

再用一个for循环来稍微深入的理解一下

for(int i=0;i<5;i++){
Debug.Log("打"+(i+1)+"条狗");
yield return new WaitForSeconds(3);
}

那么通过转换之后是什么意思的,下面同等的效果

Debug.Log("打"+(0
好的,针对你的问题,我可以提供一个基本的Unity脚本来实现这个功能。你可以在敌人的游戏对象上添加以下代码: ``` public class EnemyController : MonoBehaviour { public float patrolTime = 3f; //巡逻时间 public float moveSpeed = 2f; //移动速度 public Transform[] patrolPoints; //巡逻点数组 private int currentPointIndex = 0; //当前巡逻点的索引 private Vector3 currentTarget; //当前巡逻点的位置 private float timer = 0f; //计时器 void Start() { currentTarget = patrolPoints[currentPointIndex].position; //初始化当前巡逻点的位置 } void Update() { timer += Time.deltaTime; //累加计时器 if (timer >= patrolTime) //如果计时器超过了巡逻时间 { timer = 0f; //重置计时器 currentPointIndex = Random.Range(0, patrolPoints.Length); //随机选择下一个巡逻点 currentTarget = patrolPoints[currentPointIndex].position; //更新当前巡逻点的位置 } transform.position = Vector3.MoveTowards(transform.position, currentTarget, moveSpeed * Time.deltaTime); //移动敌人 } } ``` 这个脚本首先需要设置敌人的巡逻时间、移动速度和巡逻点数组。在Start函数中,初始化当前巡逻点的位置为数组中的第一个点。在Update函数中,累加计时器,如果计时器超过了巡逻时间,就随机选择下一个巡逻点,并更新当前巡逻点的位置。最后,使用MoveTowards函数移动敌人。这样,敌人就可以在正常状态下站立,过了三秒后开始随机巡逻了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值