【问题标题】:Unity Vector3 IssuesUnity Vector3 问题
【发布时间】:2021-05-22 01:57:40
【问题描述】:
public class sphere : MonoBehaviour
{
    bool jump;
    Rigidbody rig;
    float horizontalInput;
 
    // Start is called before the first frame update
    void Start()
    {
        rig = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            jump = true;
        horizontalInput = Input.GetAxis("Horizontal");
    }

    private void FixedUpdate()
    {
        if (jump)
        {
            rig.AddForce(Vector3.up * 3, ForceMode.VelocityChange);
            jump = false;
        }

        GetComponent<Rigidbody>().velocity = new Vector3(horizontalInput*3, 0, 0);
    }
}

在这里,当我按下 play 时,每当我的球跳跃时,它都会非常缓慢地跳跃,好像有什么东西在试图反对它。此外,当它下降时,它下降得太慢了。

谁能解释这里发生了什么并提出解决方案。

【问题讨论】:

  • 你能发布更多代码吗?这个 sn-p 将您的 x 速度设置为horizontalInput,其余设置为 0。没有垂直运动,所以没有跳跃......

标签: unity3d


【解决方案1】:

您可以使用 Gameobject Jumping 的最佳方式 请检查您的质量和重力值

private Rigidbody rb;
public float power = 5;

private void Start
{
    rb = GetComponent<Rigidbody>();
}

private void Jump
{
    rb.AddForce(0f, power, 0f, ForceMode.Impulse);
}

【讨论】:

    【解决方案2】:

    首先需要正确理解这一点:horizo​​ntalInput是一个变量,最小值为-1,最大值为+1。它不是用来设置“速度”或“力”的,而只是用来设置方向的。

    那么,我在这里推测,因为您没有提供足够的代码,您直接设置速度。如果这是您想要做的,这很好,但是您必须意识到您正在绕过物理系统。你确定你想要那个吗?如果是,则必须执行以下操作:

    public float jumpForce; // Set this at the inspector
    
    ...
    
    GetComponent<Rigidbody>().velocity = new Vector3(horizontalInput * jumpForce, 0, 0);
    

    现在,关于秋天... RigidBody 组件使您的对象以某种方式运行,这符合物理定律。你的物体会达到一定的高度,此时它的速度将是 0,然后根据物体的质量加速下降。

    这意味着它一开始会缓慢下降,而以恒定的速度移动得更快。

    如果你想让它下落得更快,你需要改变物体的 RigidBody 组件的质量值。

    话虽如此,仅在一半的动作中使用物理是很奇怪的。它可以工作并且取得了巨大的成功(即:Flappy Bird),但它从根本上是错误的。

    编辑:错字

    【讨论】:

    • 我已经上传了完整的代码。有人说当我按下跳跃时,Y 位置正在改变,但速度分量有 Y=0,所以速度使 y =0。这就像跳跃函数和速度(y = 0)是一致的。
    • 这家伙做了以下更正:GetComponent().velocity = new Vector3(horizo​​ntalInput*3, GetComponent().velocity.y, 0);这里他替换的行不是0是什么意思?
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多