【问题标题】:How to jump when player is upside down in a spherical world, using FauxGravity?使用 FauxGravity,当玩家在球形世界中倒立时如何跳跃?
【发布时间】:2022-07-25 13:04:22
【问题描述】:

我想做什么

在使用 FauxGravity 时,我正在尝试在整个球体上进行跳跃,而不仅仅是在顶部。

目前的运作方式

我的角色在顶部时可以正确跳跃,但在球体底部时不会发生跳跃。

FauxGravityAttractor

[SerializeField] private float gravity = -9.81f;

public void Attract(Rigidbody body) {
    Vector3 gravityUp = (body.position - transform.position).normalized;
    Vector3 localUp = body.transform.up;
    
    // Apply downwards gravity to body
    body.AddForce(gravityUp * gravity);
    // Align bodies up axis with the centre of planet
    body.rotation = Quaternion.FromToRotation(localUp,gravityUp) * body.rotation;
}

FauxGravityBody

FauxGravityAttractor planet;
new Rigidbody rigidbody;

void Awake()
{
    planet = GameObject.FindGameObjectWithTag("Planet").GetComponent<FauxGravityAttractor>();
    rigidbody = GetComponent<Rigidbody>();
    // Disable rigidbody gravity and rotation as this is simulated in GravityAttractor script
    rigidbody.useGravity = false;
    rigidbody.constraints = RigidbodyConstraints.FreezeRotation;
}

void FixedUpdate()
{
    // Allow this body to be influenced by planet's gravity
    planet.Attract(rigidbody);
}

样本跳跃

void Jump()
{
    if(Input.GetKeyDown(KeyCode.Space) && isOnGround)
    {
        rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        isOnGround = false;
    }
}

private void OnCollisionEnter(Collision collision)
{
    if(collision.gameObject.CompareTag("Planet"))
    {
        isOnGround = true;
    }
}

【问题讨论】:

  • 你不会找到球体中间的方向并在另一个方向上加力吗?
  • @BugFinder 感谢您的回复。我曾尝试这样做,但似乎根本没有正确地做到这一点……如果您有这样的例子,将不胜感激。这是我使用 Unity 的第二周,所以事情还是有点复杂。
  • @BugFinder 一段时间后,我设法解决了我的这个问题。非常感谢您的帮助

标签: unity3d


【解决方案1】:

FauxGravity 跳跃问题解决了

您只需将AddRelativeForce 发送至您的rigidbody

阅读更多关于RelativeForce

    // JUMPING
    private void Jump()
    {
        if (Input.GetKeyDown(KeyCode.Space) && onGround)
        {
            rb.AddRelativeForce(0, forceConst, 0, ForceMode.Impulse);
            onGround = false;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多