我正在创建玩家跳跃功能,对撞机无法达到与我的玩家跳跃时相同的高度。
我目前正在尝试根据玩家的位置手动定位对撞机。但是,这导致胶囊现在变得过高,并且由于需要花费一定的时间才能落下,因此玩家最终会淹没在地下的一半。
void Jump() {
if (Input.GetKeyDown(KeyCode.Space)&& isGrounded == true) {
isGrounded = false;
actions.Jump();
rigidbody.AddRelativeForce(Vector3.up * jumpSpeed);
startTime = Time.time;
}
else {
if (transform.position.y < .6f) {
isGrounded = true;
}
}
}
private void Update() {
if (!isGrounded) {
dist = (Time.time - startTime) * capSpeed;
fracOfJourney = dist / journeyLength;
capCollider.center = Vector3.Lerp(start, end, fracOfJourney);
}
else {
// capCollider.center = Vector3.Lerp(end, start, fracOfJourney);
}
}
答案 0 :(得分:0)
除了自己计算胶囊对撞机的位置外,更好的解决方案是将播放器的渲染组件与胶囊对撞机分开。作为一种可能的解决方案,您可以将其置于层次结构中:
Player Root: (rigidbody, player animator, Movement Script) Renderer: (Mesh of player and renderer here) Collider: (Capsule Colider here)
完成此操作后,可以在跳跃动画期间根据需要更改比例和位置,从而匹配胶囊对撞机的边界。将对撞机分成自己的游戏对象,使您可以更改比例,而不会影响玩家的外观或位置。