我希望玩家在落地时跳跃。
private void OnTriggerStay(Collider other)
{
if(other.gameObject.layer == 8)
{
isGrounded = true;
}else { isGrounded = false; }
}
玩家在生成时正在直播。玩家跌落到具有标签的地形后Ground
, isGrounded
仍然是假的。当我手动设置isGrounded为true并再次跳转时,碰撞后仍然为true。我也不希望玩家在空中进行双跳,我可能已经编码了,但由于出现问题而无法正常工作。
改变OnTriggerStay
to OnTriggerEnter
并没有改变什么。我希望你可以帮助我。
Do not use OnTriggerStay
去做这个。这并不能保证每次都是正确的。
将 isGrounded 标志设置为 true 时OnCollisionEnter
叫做。设置为 false 时OnCollisionExit
叫做。
bool isGrounded = true;
private float jumpForce = 2f;
private Rigidbody pRigidBody;
void Start()
{
pRigidBody = GetComponent<Rigidbody>();
}
private void Update()
{
if (Input.GetButtonDown("Jump") && isGrounded)
{
pRigidBody.AddForce(new Vector3(0, jumpForce, 0));
}
}
void OnCollisionEnter(Collision collision)
{
Debug.Log("Entered");
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
void OnCollisionExit(Collision collision)
{
Debug.Log("Exited");
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
}
}
在您说它不起作用之前,请检查以下内容:
你必须有Rigidbody
or Rigidbody2D
附加到播放器。
If this Rigidbody2D
,你必须使用OnCollisionEnter2D
and
OnCollisionExit2D
.
您必须使用 IsTrigger 将 Collider 连接到玩家
禁用。
确保您没有移动Rigidbody
与这样的变换
作为transform.position
and transform.Translate
。你必须移动Rigidbody
与MovePosition功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)