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

Unity3D 关于yield在collider中的使用

今天朋友在写三个触发器简单协作的应用,但是无论怎样都达不到预期的效果,其中大概有一句代码如下:

function OnColliderStay (other :Collider){
    //停下来
    other.getComponent(Move).direction = Vector3.zero ;
    //等待两秒钟
    yield WaitForSeconds(2);
    //恢复运动
    other.getComponent(Move).direction = Vector3.forward ;
}

然后下一个触发器有一个停下来并且转向的动作,大概代码如下:

function OnColliderEnter (other :Collider){
    //停下来
    other.GetComponent(Move).direction = Vector3.zero ;
    //等待1秒
    yeild WaitForSeconds(1);
    //转向,希望在转的方向上继续运动
    other.GetComponent(Move).direction = Vector3.left ;
    //恢复速度希望在方向上移动
}

通过以上代码,结果无论怎样都不能按照期望的那样转向运动。其实敏感的朋友看到第一段代码就应该有感觉了,它一定是问题代码,而且严重!!!

 

问题分析及解决

其实在上面第一段代码中,OnColliderStay片段会每帧都执行,在里面写yeild实际上是不允许的,就像不允许在Update、FixedUpdate中写一样,奇怪的是为什么编译器禁止后面两种,却允许了前面那种写法!它的执行过程不好分析,但运动出来的时候一定是还有一个yeild在等待,也就是两秒后它会重置方向。这可能导致下面一段代码中的方向重置失效!

 

结论

一定不要在OnColliderStay, OnTriggerStay, Update, FixedUpdate以一定频率循环执行的方法中添加yeild !

转载于:https://www.cnblogs.com/huntdream/archive/2013/04/24/3041429.html

相关文章:

  • ultraWinGrid绑定下拉框
  • 双向循环链表运用(2)
  • Qt ui的动态加载
  • Oracle11gR2 静默建库,删库和配置
  • Qt ui在程序中的使用
  • grub2编译安装
  • 项目中用到的架构模式(持续更新)
  • 校园招聘笔试题(A卷)
  • javadoc 命令
  • 校园招聘笔试题(B卷)
  • 进程与线程的一个简单解释
  • 嵌入式C开发人员的最好的0x10道笔试题
  • nullnullDefining and Launching the Query 定义和启动查询
  • IT知名公司工资一览
  • C++ const的用法
  • 07.Android之多媒体问题
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android Studio:GIT提交项目到远程仓库
  • java8 Stream Pipelines 浅析
  • Lsb图片隐写
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python_OOP
  • Spark RDD学习: aggregate函数
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 数组大概知多少
  • 数组的操作
  • raise 与 raise ... from 的区别
  • 大数据全解:定义、价值及挑战
  • 国内开源镜像站点
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #100天计划# 2013年9月29日
  • #ifdef 的技巧用法
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (七)Knockout 创建自定义绑定
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)母版页和相对路径
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 依赖注入的基本用发
  • .NET Core中的去虚
  • .net framework 4.0中如何 输出 form 的name属性。
  • ??myeclipse+tomcat
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [100天算法】-目标和(day 79)
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [CLickhouse] 学习小计
  • [NOI2005]聪聪与可可(期望)
  • [NOI2022] 众数 题解