【问题标题】:unity 3D : not detecting OnTriggerEnter with a prefabunity 3D:未使用预制件检测 OnTriggerEnter
【发布时间】:2015-03-22 15:00:36
【问题描述】:

我有一个预制件,它在 Z 轴上移动,想在它到达作为触发器的对撞机时将其销毁(是的,我选中了对撞机上的 Is Trigger 框)。

我直接从 Unity 文档中编写了这段代码,该文档位于: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

function OnTriggerEnter (other : Collider){
 Debug.Log ("Hello");
 Destroy(other.gameObject);
}

我的预制有以下脚本:

#pragma strict
var speedFactor : float = 3.0;
var rayDistance : float = 1.0;
var rayOriginOffset : float = 0.63;

function Start () {}

function Update () {
var rotationRaycast = transform.TransformDirection (Vector3.forward);
if(Physics.Raycast(transform.position + (transform.right * rayOriginOffset)
 ,rotationRaycast,rayDistance) || Physics.Raycast(transform.position + 
(transform.right * -rayOriginOffset) ,rotationRaycast,rayDistance) || 
Physics.Raycast(transform.position ,rotationRaycast,rayDistance)){

}
else {
transform.Translate((Vector3.forward)* Time.deltaTime * speedFactor );
}
}

我的对撞机忽略了光线投射(碰撞或触发在场景视图中视觉上发生)。 预制件绕过我的对撞机/触发器并继续无穷大。

【问题讨论】:

    标签: unity3d collision-detection gameobject


    【解决方案1】:

    当有人使用 Unity3d 的文档但它不起作用时,我真的很讨厌它。穆拉德不是你的错。 Unity3D 开发人员从未修复过有关“OnFly”或“默认值”的问题

    var speedFactor : float = 3.0;
    var rayDistance : float = 1.0;
    var rayOriginOffset : float = 0.63;
    

    这实际上不适用于 MonoDevelop 的 JavaScript。我已经通知 Unity 这件事,他们说,他们会修复它。但还是不行。这适用于 C#,但不适用于 JS。

    所以你需要这样做。

    var speedFactor : float;
    var rayDistance : float;
    var rayOriginOffset : float;
    
    function Start(){
      speedFactor = 3.0;
      rayDistance = 1.0;
      rayOriginOffset = 0.63;
    }
    

    确保在两个游戏对象中都有刚体组件和碰撞器。

    【讨论】:

    • 感谢您提供的信息。但问题是..我的问题是第一个脚本..简单的复制过去但根本不起作用!
    • 确保在两个游戏对象中都有刚体组件和碰撞器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多