2014-09-22 111 views
1

我正在制作一个2D游戏,玩家可以抓住和放下一些物体。我正在使用OnCollisionStay函数来完成它。问题在于我的玩家需要“触摸”盒子才能抓住它,并且我认为在没有网格渲染器的情况下在他的左右两侧制作两个碰撞盒,并将脚本放到两个碰撞盒上都可以解决问题。穿过箱子对撞机,但仍然执行OnCollisionStay功能

该剧本可行,但游戏中的效果就像玩家触摸并在他周围的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; 
    } 
} 
+0

你好,欢迎堆栈溢出!作为一个领导者:Unity实际上是指微软的Inversion of Control框架。标记时,请务必使用Unity3D。 – 2014-09-22 15:32:20

+0

@NickUdell感谢您的更正和建议!有什么办法可以让你像工作一样吗? – Ezequiel 2014-09-22 16:21:02

+0

随着声誉的提高,您可以对评论投票,但我不担心。很高兴帮助。 – 2014-09-22 18:22:08

回答

0

你可以让你的两个箱子撞机触发你的对象,勾选上的检查框对撞机部件的“isTrigger”复选框,通过它们。

然后只需用OnTriggerStay

OnCollisionStay(other: Collision) 

更换OnCollisionStay成为

OnTriggerStay(other: Collider) 
+0

工作完美!谢谢! – Ezequiel 2014-09-22 16:28:17

相关问题