void checkGround()
{
RaycastHit hit;
float shellOffset = 0.01f;
float groundCheckDistance = 0.01f;
Vector3 currentPosition = transform.position;
currentPosition.y += capsuleCollider.height / 2;
if (Physics.SphereCast(currentPosition, capsuleCollider.radius * (1.0f - shellOffset), Vector3.down, out hit,
((capsuleCollider.height / 2f) - capsuleCollider.radius) + groundCheckDistance, ~0, QueryTriggerInteraction.Ignore))
{
isGround = true;
}
else
{
isGround = false;
}
}
能否解释下 if 语句的条件是如何判断的, ~0 是什么语法,自己 C# 学得不太好,麻烦了!
大概是判断以碰撞器中心currentPosition, capsuleCollider.radius * (1.0f - shellOffset)为圆心 以((capsuleCollider.height / 2f) - capsuleCollider.radius) + groundCheckDistance, ~0, QueryTriggerInteraction.Ignore))为半径是否有碰撞 如果有说明与地面有接触就是在地面 没有就没有在地面