【发布时间】:2019-08-27 17:14:14
【问题描述】:
好的,所以我更改了代码并添加了新的 c# 脚本。我检查了盒子 coliders 他们很好。现在的问题是我不能跳。
这是我在 Move2DPlayer 中所做的更改
private void Jump()
{
if (Input.GetButtonDown("Jump") && isGrounded == true)
{
gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, 5f), ForceMode2D.Impulse);
}
}
这是新的 c#,它被称为“Grounded”
public class Grounded : MonoBehaviour
{
GameObject Player;
private void Start()
{
Player = gameObject.transform.parent.gameObject;
}
private void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag == "Ground")
{
Player.GetComponent<Move2DPlayer>().isGrounded = true;
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.collider.tag == "Ground")
{
Player.GetComponent<Move2DPlayer>().isGrounded = false;
}
}
}
【问题讨论】:
-
你检查你的碰撞层和
whatIsGround了吗?Physics2D.OverlapCircle(rb.position, checkRadius, whatIsGround);是否有可能总是返回 true,因为它与玩家对撞机本身重叠?因为我在没有更改任何内容的情况下测试了您的代码,它对我有用,包括空中的额外跳跃。在那之后,我直到回到地面才能跳,所以它必须是你的层
标签: c# visual-studio unity3d