Farseer / Unity - 运动物体和传感器

时间:2012-11-19 14:10:09

标签: box2d unity3d farseer

我正在与Unity合作开发Plattformer游戏。我目前正在使用CatsInTheSky

的Farseer-Port

我遇到了一些问题...是的,物理学。我真的不想在游戏中使事情变得现实,但我想使用CollisionDetection of Farseer。

所以,我遵循了Farseer-Unity-Tutorials并给了我的角色一个盒子(BodyType:Dynamic)。它表现得如此:

  • 摔倒
  • 与地面碰撞
  • 它有点滑

然后我开始研究一个Farseer和Box2D(还有一些更有帮助的教程),因为我只想让我的角色移动,当我说他移动时,没有在地面滑动或类似的东西

我读了一些关于好方法的文章:使用传感器进行碰撞检测。

所以我在Unity中制作了四个GameObjects并调用了它们Back / Front / Foot / Head-Sensor,给了他们一个RevoluteJoint-Component并用这四个GameObjects绑定了PlayerObject(它们还有一个Body-Component,标记为“动态” - 身体),我给了他们一个脚本,这个脚本有这样的CodeLine:

        FootSensor.IsSensor = true;

因此它们根本不会发生碰撞(因为它们被标记为动态身体),但会记录碰撞。

现在我有点被困:/

如果他接触地面,我无法弄清楚如何让我的玩家身体保持静止。

我尝试过类似的东西,但它根本不起作用:

bool SensorOnCollision (Fixture fixtureA, Fixture fixtureB, Contact contact)
{
    Debug.Log("HIT THE GROUND!");


    velocity.Y = 0;

    return true;
}

(“velocity”变量是一个全局变量,其中我放置了Body.LinearVelocity-我的播放器的信息)

然后我将我的玩家身体改为运动身体,知道它根本不会浮动或碰撞,直到我想要。所以Gravity也不会影响它。

我只想让我的传感器告诉我,如果我接地,如果是的话,我应该留在这个地方。

如果有人可以提供帮助,我真的很感激吗?

(如果其他人正在使用Unity-Port,我很想知道如何访问Farseer ContactListener。)

0 个答案:

没有答案