【发布时间】:2016-10-27 03:07:13
【问题描述】:
大家好,谢谢大家阅读我的问题,我正在使用 unity 5 创建永远的跑步者游戏,我希望我的角色跳过障碍物,但我希望物体在跳跃过程中向前移动,但是我有跳跃花很短的时间,角色离地面很近,而不是向前移动-跳跃时-即使我像代码中那样对其施加力,我该怎么办?
void Start ()
{
anim = GetComponent<Animator>();
rbody = GetComponent<Rigidbody>();
verticalJumpPower = 80f;
horizantalJumpPower = 1000f;
playerVelocity = 10f;
isGrounded = true;
}
***in update function :***
if(Input.GetKeyDown (KeyCode.UpArrow))
{
rbody.AddForce(new Vector3(0,verticalJumpPower,horizantalJumpPower));
anim.SetBool("jump",true);
isGrounded = false;
}
【问题讨论】:
-
尝试将
ForceMode类型更改为ForceMode.Impulse。即rBody.AddForce(new Vector3(0, verticalJumpPower, horizontalJumpPower), ForceMode.Impulse); -
它对施加力起作用了,但角色仍然没有在空中向前移动
-
这是用于 2D 游戏的吗?检查您已将游戏世界对齐到的轴。您可能需要将 Vector3 构造函数更改为
horizontalJumpPower, verticalJumpPower, 0。 -
我确定我在 z 方向上运行
-
我添加了 anim.applyRootMotion = false;它奏效了
标签: c# unity3d game-engine game-physics