能否解释一段关于检查人物是否在地面上的代码?

发布于 2022-09-06 01:48:18 字数 638 浏览 10 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

想念有你 2022-09-13 01:48:18

大概是判断以碰撞器中心currentPosition, capsuleCollider.radius * (1.0f - shellOffset)为圆心 以((capsuleCollider.height / 2f) - capsuleCollider.radius) + groundCheckDistance, ~0, QueryTriggerInteraction.Ignore))为半径是否有碰撞 如果有说明与地面有接触就是在地面 没有就没有在地面

萝莉病 2022-09-13 01:48:18

~是取反的意思
~0就是将0的所有二进制位取反
也就是说, ~0 等于 -1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文