YAN_HUAXIANGMO
2017-12-23 07:32
采纳率: 70%
浏览 5.7k
已采纳

Unity3D OnTriggerStay,OnTriggerExit问题

是这样,我的激光炮碰到物体时触发OnTriggerStay,当物体消灭后,触发OnTriggerExit,但是事实不时这样,当物体消灭后,就不触发OnTriggerExit了,只有我的激光炮在物体未被消灭前移开物体才会触发OnTriggerExit,有没有什么办法能够使物体被消灭后就执行我的OnTriggerExit里面的代码,或则说能在Update里面判断此刻不在执行OnTriggerExit这个方法

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • EncodingGentleman 2017-12-29 15:45
    已采纳

    这样吧,你可以事先声明一个collider,触发OnTriggerStay的时候,用这个collider存储正在碰撞的物体,物体一旦消灭,collider就为空了,然后在update里面判断这个物体是否为空的,为空就执行你的OnTriggerExit就行了。

    点赞 3 评论
  • qq_37936039 2017-12-23 08:40

    物体被消灭不要删除碰撞体,只是把meshrender隐藏,OnTriggerExit执行完了再彻底删除物体

    点赞 评论
  • 战在春秋 2017-12-23 09:24

    有没有什么办法能够使物体被消灭后就执行我的OnTriggerExit里面的代码

    不是太理解您的需求,物体被消灭有对应的事件OnDestroy,将OnTriggerExit的代码移到这里是否可行?
    或者变通一下,只是隐藏外形,保留Collider组件,仍然可以触发碰撞相关代码。

    如果对您有帮助,请点击采纳答案好吗,谢谢~~

    点赞 评论
  • dabocaiqq 2017-12-23 14:51

    参考下这个

    http://www.manew.com/youxizz/1955.html

    如果对您有帮助,请点击采纳我的答案

    点赞 评论
  • junpugege 2017-12-24 01:39

    OntriggerExit的生命周期丢失了。。。因为你在OnTriggerStay的时候将this.gameobject已经销毁,所以OntriggerExit也一并销毁
    你可以在OnTriggerStay 关闭mesh组件,然后 在OntriggerExit执行代码并销毁对象

    点赞 评论
  • ylyljs 2017-12-25 06:35

    你可以在销毁物体前执行掉Exit里的代码,然后再销毁物体哦

    点赞 评论
  • linquan233 2017-12-25 08:36

    你的OnTrigger是放在被消灭物体还是激光?
    应该是挂载物体的脚本上的吧?
    你是想触发Exit里的函数?
    按照你的思路,你应该把函数放在Destroy里,也就是销毁的时候。 或者Ondisable里。
    对了,提醒你哦,如果敌人很多的话,最好学会用对象池,当然了,自己做小游戏无所谓啦

    点赞 评论

相关推荐 更多相似问题