Unity3D 中使用OnTiggerEnter遇到的不触发问题

移动GameObject,绑定BoxCollider,Istrigger选中。

固定GameObject,绑定BoxCollider,刚体属性,IsKinematic选中。

此种情况下,移动GameObject中的OnTriggerEnter()很多时候都无法被触发。

 

移动GameObject,绑定BoxCollider,刚体属性,IsKinematic选中。

固定GameObject,绑定BoxCollider,Istrigger选中。

此种情况下,固定GameObject中的OnTriggerEnter()能稳定触发。

 

另外在游戏帧率太低的情况下,OnTriggerEnter()可能不会被触发,没经过测试,只是可能。

 

更新:

当IsKinematic选中时,刚体会进入休眠状态。

rigidbody.IsSleeping()返回值为true。

对于前面的第一种情况。固定的GameObject的刚体属性中,IsKinematic 不选中。

在Update函数中持续调用 rigidbody.WakeUp();

可以使移动的GameObject中的Collider的Tigger响应(移动物体无刚体属性)。

为了使固定的GameObject在IsKinematic在不选中的情况下保持静止,勾选rigidbody下的Freeze Position 和 Freeze Rotation

 

原文链接:http://blog.sina.com.cn/s/blog_aa2a90440101ia9p.html

声明: 本文由( liuxiaoni )原创编译,转载请保留链接: Unity3D 中使用OnTiggerEnter遇到的不触发问题

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Unity3D是一款流行的游戏开发引擎,可以用于创建各种类型的游戏。在Unity3D实现第一人称触发开关门的方法如下: 首先,我们需要创建一个门对象。可以使用Unity3D的基本3D模型创建一个门,并将其放置在场景合适的位置。 接下来,在门对象上添加一个Box Collider2D组件,并设置其作为触发器。这样,当玩家进入触发器范围内时,我们就可以触发门的开关操作。 然后,我们需要为门创建一个脚本。在脚本,我们可以使用Unity3D的Input类来检测玩家输入。例如,我们可以检测玩家按下一个特定的键来开关门。 在脚本,我们需要使用Transform组件控制门的位置和旋转。当玩家按下开关门的键时,我们可以使用Transform组件的Rotate方法来旋转门。 此外,我们还可以使用Animator组件来创建门的开关动画。可以为门创建两个动画状态,分别表示打开和关闭的状态。当玩家触发门时,我们可以在脚本使用Animator组件播放相应的动画。 最后,我们需要将脚本附加到门对象上,并确保门和玩家之间存在正确的碰撞关系,以便正确触发门的开关操作。 通过以上步骤,我们就可以实现在Unity3D的第一人称触发开关门功能。玩家在游戏接触到门时,可以按下键触发门的开关,从而实现门的打开与关闭。 ### 回答2: 在Unity3D,实现第一人称触发开关门机制可以通过以下步骤完成: 首先,我们需要创建一个门模型,并将其放置在场景合适的位置。然后,在门模型上添加一个刚体组件,以便门可以进行移动。 接下来,我们需要创建一个空游戏物体,作为门的触发器。将触发器放置在门的旁边,并调整其大小以覆盖门的范围。 然后,在门触发器上添加一个触发器组件,以便在玩家接近门时触发特定的动作。选择门触发器,在“Add Component”搜索并添加“Box Collider”组件。在“Box Collider”组件将“Is Trigger”属性勾选。 接下来,我们需要为门设置动作脚本。创建一个新的C#脚本,并将其附加到门模型上。在脚本,我们需要定义一个布尔变量来表示门的打开状态。 在脚本,我们可以使用触发器的OnTriggerStay方法来检测玩家是否接近门,并根据需要执行相应的动作。例如,如果玩家接近门,并且按下“E”键,则我们可以将门的打开状态设置为true,从而使门打开。 最后,在脚本,我们可以使用Transform组件的Lerp方法实现门的平滑移动。通过将门的位置从关闭状态(初始位置)移动到打开状态(目标位置),我们可以实现门的平滑开启和关闭。 通过以上步骤,我们可以在Unity3D实现第一人称触发开关门机制。玩家靠近门时,按下特定按键即可触发门的打开或关闭动作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值