【发布时间】:2020-09-22 08:44:14
【问题描述】:
我正在使用球物理和 FPS 相机制作游戏。我正在使用 rb.drag 和 rb.angularDrag 在某些情况下(例如:在空中、制动/蹲伏时)减慢我的播放器速度。问题是,它的效果太好了,因为它还减慢了我的播放器的下落速度。如何让我的播放器在使用 rb.drag 时正常摔倒?
注意事项:
- 我已经使用 rb.mass 进行了测试。这使得对玩家的控制变得更糟。
- 我已经尝试过
rb.AddForce(Vector3.up * -rb.drag*gravityForce);,但仍然感觉掉下来。要么我跌得太快以至于几乎无法跳跃,要么玩家仍然以恒定的速度跌落,没有加速。
我的动作代码:
void Start()
{
DistanceToTheGround = GetComponent<Collider>().bounds.extents.y;
}
void Update()
{
// Input
moveFwrd = Input.GetAxis("Horizontal");
moveSide = Input.GetAxis("Vertical");
// Player Jump
onGround = Physics.Raycast(transform.position, Vector3.down, DistanceToTheGround + 0.1f);
if (onGround)
{
rb.drag = 0f;
if (Input.GetKeyDown(jumpKey))
{
rb.AddForce(Vector3.up * jumpSpeed, ForceMode.Impulse);
}
}
else
{
rb.drag = 2f;
rb.AddForce(Vector3.up * -rb.drag*6f);
}
// Braking
if (Input.GetKey(brakeKey))
{
rb.drag = brakeForce;
}
}
void FixedUpdate()
{
// Player Movement
movement = cam.transform.right * moveFwrd + cam.transform.forward * moveSide;
movement.y =0;
movement = movement.normalized;
rb.AddForce(movement * speed);
}
【问题讨论】: