【发布时间】:2021-09-27 21:25:43
【问题描述】:
public bool useCharacterForward = false;
public bool lockToCameraForward = false;
public float turnSpeed = 10f;
public KeyCode sprintJoystick = KeyCode.JoystickButton2;
public KeyCode sprintKeyboard = KeyCode.Space;
public bool useJump = false;
public Vector3 jump;
public float jumpImpulse;
private float turnSpeedMultiplier;
private float speed = 0f;
private float direction = 0f;
private bool isSprinting = false;
private Animator anim;
private Vector3 targetDirection;
private Vector2 input;
private Quaternion freeRotation;
private Camera mainCamera;
private float velocity;
private bool isGrounded;
private Rigidbody rb;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
mainCamera = Camera.main;
rb = GetComponent<Rigidbody>();
jump = new Vector3(0.0f, 2.0f, 0.0f);
}
private void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && useJump)
{
rb.AddForce(jump * jumpImpulse, ForceMode.Impulse);
isGrounded = false;
}
}
即使玩家在空中并且即使我正在检查地面标签,我仍然可以在玩家跳跃后在空中时再次按下空间,它会跳跃并移动玩家在空中更高。
但我将 isGround 设置为 false 并且玩家离地面更高,并且仍然按下空间使其在空中跳跃时已经在空中。
此屏幕截图显示了地面对象是如何在层次结构中构建的。 玩家有一个胶囊对撞机和一个刚体。
有 3 个楼层对象:
【问题讨论】: