我有一个预制件并且它在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 );
}
}
并且我的对撞机忽略了光线投射(在场景视图中可视地发生碰撞或触发)。 预制件绕过我的对撞机/扳机并继续无限。
答案 0 :(得分: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;
}
确保在两个游戏对象中都有刚体组件和碰撞器。