如何从玩家的原点获取向量到玩家碰撞的墙上?

时间:2018-04-07 08:07:55

标签: unity3d

我在Unity作为学校项目制作了一个3D fps跑酷游戏。

我认为我的大部分跑酷部分都在工作,但还有一个大问题。

我想给玩家一些空气动作,因为如果没有它就很难到达平台,但它会让墙壁运动变得非常困难。

当玩家跳到墙上后,如果他/她在沿着它移动时甚至离墙一点点移动,则玩家从墙上脱落并开始自由下落(玩家可以在滑行时移动,因为他/她实际上不在地面上,所以空气运动开始了。

所以我认为创造一个非常强大的力量将玩家推到碰撞的墙上应该可行,但是当我使用时:

    other.transform.position-player.transform.position

我得到的推力矢量不是最近的点。矢量从我的玩家到墙的中心,根本不正确。 (因为墙壁的中心比玩家的中心高很多,所以它创造了一个向上发动玩家的力量。)

然后我尝试使用collision.contacts[0].point,但由于某种原因,它没有给我我想要的结果。我正在为你添加一个图像,以便在游戏场景中看到矢量的样子:

Scene view while wallrunning

粉红色的胶囊是玩家。灰色的飞机是我的地面,深褐色的块是我的墙。绿色的箭头是我试图找到的矢量。

蓝线'代码:

    Debug.DrawRay(rb.transform.position, collision.contacts[0].point, Color.blue,1,true);

红线代码;

    Debug.DrawRay(rb.transform.position, collision.transform.position, Color.red,1, true);

从玩家到墙上找到矢量也可以帮助我实现walljump,因为从a跳跃应该会创建一个将玩家推离墙壁的力量。

0 个答案:

没有答案