0

プレハブがあり、Z 軸上を移動しています。トリガーであるコライダーに到達したときに破壊したいと考えています (はい、コライダーの Is Trigger ボックスをチェックしました)。

このコードは、 https ://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html にある Unity ドキュメントから直接作成しました 。

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 );
}
}

私のコライダーはレイキャストを無視します(衝突またはトリガーはシーンビューで視覚的に発生します)。プレハブは私のコライダー/トリガーをバイパスし、無限に続きます。

4

1 に答える 1

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;
}

両方のゲーム オブジェクトに Rigid Body Component と Collider があることを確認してください。

于 2015-03-23T20:24:56.473 に答える