jumpVelocity是不是没初始值
时间: 2024-03-12 18:49:37 浏览: 14
对的,跳跃速度 `jumpVelocity` 在代码中确实没有初始值。但因为初始值只用在跳跃时,所以在 `Update()` 函数中按下空格键时再计算初速度即可,代码如下:
```csharp
public class CharacterJump : MonoBehaviour
{
public float jumpHeight = 0.4f; // 跳跃高度
public float jumpTime = 1.0f; // 跳跃时间
private bool isJumping = false;
private float jumpVelocity;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && !isJumping)
{
isJumping = true;
jumpVelocity = Mathf.Sqrt(2 * jumpHeight * Physics.gravity.magnitude);
}
}
private void FixedUpdate()
{
if (isJumping)
{
transform.position += Vector3.up * jumpVelocity * Time.fixedDeltaTime;
jumpVelocity -= Physics.gravity.magnitude * Time.fixedDeltaTime;
if (transform.position.y <= 0.0f)
{
transform.position = new Vector3(transform.position.x, 0.0f, transform.position.z);
isJumping = false;
}
}
}
}
```
感谢你的指正,让我有机会修改这个错误。