很抱歉标题名称,但我不知道如何更好地对其进行概括,请随时进行更改。
虽然现在在门户网站上使用此脚本,但我正在尝试统一创建2d门户网站
OnTriggerEnter2d(collision other)
{
if(other.gameobject.tag == "ball")
{
// portal2 is just a gameobject I input in the editor.
other.transform.position == portal2.transform.position;
}
}
对不起,我的原始图纸会导致这种情况发生:
现在做什么
但是正如您所看到的,无论球如何击中Portal1(蓝色),它总是会出现在Portal2(橙色)的中心。
但是我需要这样做:
我需要它做什么
如果球碰到了传送门的顶部,则它从顶部出来,如果它碰到了底部,则它从底部出来,等等。
我不知道该怎么做,两个入口的大小相同,只是彼此的精灵交换。
答案 0 :(得分:1)
您需要计算碰撞的偏移量(以您的情况为y)。我相信这将是最简单的解决方案,因为您正在使用触发器(因此获得Collider)而不是碰撞(在那里您将获得Collision并因此可以访问contactPoints
):
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "ball")
{
var offset = other.transform.position - transform.position;
// Set x to 0 if you want to ignore the x offset value like your image suggests
offset.x = 0;
other.transform.position = portal2.transform.position + offset;
}
}
答案 1 :(得分:0)
您可以做的是当它发生冲突时在代码中获得它的位置。然后使用该位置来确定该位置应显示在另一个位置。例如,说门的长度是20,而一个门的长度是100,一个门的长度是200。相撞时,您的球的位置是115。下一个门的位置是200。您可以从门的位置减去球的位置球碰到并加上您得到的结果,例如这是15,因为115-100 = 15。因此,当您添加它们时,您将得到215。然后您将使用215来改变球在bof上的位置,而不仅仅是200。