当移动平台在Unity中坠落时,物体未接触地面



我使用Unity让我的角色从一个移动的平台上跳下来;无限下降。我面临的问题是,当移动的平台上升时,跳跃是完美的,但当平台下降时,我的角色不能经常跳跃;我可以看到平台是";"振动";有点奇怪。

这是我的代码:

移动平台脚本[NB-刚体2D设置为运动学]

public class Moveground : MonoBehaviour
{
[SerializeField] private Transform posTop, posBot;
private float maxTop = -0.5f;
private float maxBot = -5.0f;
[SerializeField] private float speed;
[SerializeField] private Transform startPos;
private Vector2 nextPos;

private void Start()
{
nextPos = startPos.position;
}
private void FixedUpdate()
{
if (transform.position == posTop.position)
{
nextPos = posBot.position;
}
if (transform.position == posBot.position)
{
nextPos = posTop.position;
}
transform.position = Vector2.MoveTowards(transform.position, nextPos, speed*Time.deltaTime);
}
}

PlayerController.cs(仅跳转部分(

[SerializeField] private LayerMask ground;
private Collider2D coll;
private void Start()
{
coll = GetComponent<Collider2D>();
}
private void Update()
{
InputManager();
}
private void InputManager()
{
if (Input.GetButtonDown("Jump") && coll.IsTouchingLayers(ground))  // Moving Platform's layer is also "ground"
{
Jump();
}
}
private void Jump() {
rb.velocity = new Vector2(rb.velocity.x, jumpforce);  // jumpforce is a float number
}

如何解决此问题?我是Unity的新手。

而不是"IsTouchingLayers";在PlayerController类中尝试这样的操作:

public bool IsGrounded()
{
return Physics2D.Raycast(transform.position, Vector3.down, 0.1f, ground);
}

和玩距离的论点,这是0.1f的论点。

如果你的玩家转换不在玩家的底部,你也可以输入这样的东西,而不是0.1f:

coll.bounds.extents.y + 0.1f

最新更新