通过一个盒子对撞机,但仍然执行OnCollisionStay功能

时间:2014-09-22 15:18:36

标签: unity3d collision game-physics

我正在制作2D游戏,其中玩家可以抓取并放下一些物体。我正在使用OnCollisionStay函数来执行此操作。问题是我的玩家需要“触摸”该框才能抓住它,我认为在没有网格渲染器的情况下在他的左右两侧制作2个碰撞盒并将我的脚本放到它们上面就可以解决问题。 / p>

剧本有效,但游戏中的效果就像玩家正在触摸并用他周围的2个隐形框抓住东西。

有没有办法让隐藏的盒子通过我的游戏对象抓住它们,同时仍然导致OnCollisionStay函数被执行?

这是我的剧本:

#pragma strict
var agarrado: boolean;
var cosa : Collision;
function OnCollisionStay(other : Collision) {
    if (other.transform.position.y < transform.position.y-1.5) 
        return;
    if(Input.GetKeyUp("e")){
        cosa = other;
        agarrado= true;
    }
}

function Update()
{
    if(agarrado)
    {
        cosa.transform.position.x = transform.position.x;
    }
}

1 个答案:

答案 0 :(得分:0)

你可以通过勾选&#34; isTrigger&#34;来让你的两个盒子碰撞器触发器让你的对象通过它们。检查器中的盒子对撞机组件上的复选框。

然后简单地将OnCollisionStay替换为OnTriggerStay

OnCollisionStay(other: Collision) 

变为

OnTriggerStay(other: Collider)