使对象移动到鼠标位置而不通过其他对象?

时间:2016-04-13 02:25:54

标签: unity3d

我正在制作一个这样的游戏:

https://www.youtube.com/watch?v=06b0-pwuyKQ

关于这一点,我必须用触摸拖动移动1个对象,当拖动这个对象时,它不能通过其他对象。

第一次,我尝试使用boxcollider和rigidbody,然后将对象lerp到鼠标位置。不幸的是,对象拖延总是通过其他对象。

所以我尝试创建网格地图,在游戏中拥有所有对象,然后在移动任何对象时,我用相邻对象检查对象的当前位置,现在它是向上,向下,向左和向右,然后用邻居夹住它的位置。这行得通!但是对于对角线邻居对象,它仍然会通过。

所以,我决定创建这个话题,问:

如何用对角线邻居物体夹住物体的位置? 或者有任何解决方案来移动物体刚体而不通过其他物体?

下面是视频演示和1部分代码来夹住我的对象位置。

非常感谢!

代码:pastebin.com/mSrQjQmn 视频:facebook.com/jim.dum.5/videos/450488961822806 /

1 个答案:

答案 0 :(得分:0)

Lerp绕过对手。我认为你应该通过脚本来解决这个问题。

public class StopMoving()
{
public bool canLerp;
void OnCollisionEnter(Collider other)
{
   if (other.tag == "yourTag")
    {
      canLerp = false;
    }
}
}

你应该让canLerp成为你Lerp的一个要求。因此,当碰撞对撞机时你可以阻止它。您可以使用任何方式识别正确的对象。我用tag作为例子。不要忘记将canLerp更改为true以恢复到鼠标位置。