能否解释一段关于检查人物是否在地面上的代码?
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# 学得不太好,麻烦了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
大概是判断以碰撞器中心currentPosition, capsuleCollider.radius * (1.0f - shellOffset)为圆心 以((capsuleCollider.height / 2f) - capsuleCollider.radius) + groundCheckDistance, ~0, QueryTriggerInteraction.Ignore))为半径是否有碰撞 如果有说明与地面有接触就是在地面 没有就没有在地面
~是取反的意思
~0就是将0的所有二进制位取反
也就是说, ~0 等于 -1