1

这是代码:

使用 UnityEngine;

public class playerMovement : MonoBehaviour {

    public Rigidbody2D rb;
    public float strength = 100f;


    void Start () {
        //Initialize the body of the sprite so that forces
        //can be applied.
        rb = GetComponent<Rigidbody2D>();
    }


    // Update is called once per frame
    void FixedUpdate () {
        //Note2Self: var says this is a variable of unspecified type.
        var touch = new Touch();

        /*
        if (touch.phase == TouchPhase.Began){
            rb.AddForce(transform.forward * strength);
        }*/

        if (Input.anyKey)
            rb.position.Set(0, 100);
    }
}

我正在尝试在 Unity 中练习一些基本的东西(我根本不习惯在 IDE 中编程,到目前为止,我们只是在我的程序中使用了 vim),这时我遇到了这个奇怪的问题。

首先,我不明白为什么在没有触摸识别的情况下精灵会移动,因为我还没有在移动设备上实际测试过。所以我把它注释掉了,由于某种原因,精灵仍然在移动。该代码不应该做任何事情,但它确实如此。

我已经检查了精灵是否使用了最新的脚本 - 它是 - 我已经检查了脚本是否针对正确的刚体并且它是一个刚体 2D。这是。

到底是怎么回事?

4

2 回答 2

2

我查看了统一文档: https ://docs.unity3d.com/ScriptReference/Rigidbody2D.html ,其中说将Rigidbody2D组件应用于对象会将其置于物理引擎的控制之下。

Rigidbody2D 类在 2D 中提供与 Rigidbody 类在 3D 中提供的相同功能。将 Rigidbody2D 组件添加到 sprite 使其处于物理引擎的控制之下。就其本身而言,这意味着精灵将受到重力的影响,并且可以通过脚本使用力进行控制。

我不止一次遇到刚体问题,我建议您RigidBody2D在统一检查器窗口中检查组件并确保取消选中使用重力。

此外,您可能只想编写自定义脚本而不使用刚体。在 youtube 上进行搜索可能会为您提供所需的确切信息。希望这可以帮助!

于 2018-09-02T03:31:39.630 回答
2

如果它只是下落,它可能是受重力影响的。

您可以通过在函数rb.gravityScale = 0;末尾添加来在脚本中关闭它Start()

或者

通过在刚体组件内的编辑器中设置它在此处输入图像描述

于 2018-09-02T03:53:25.207 回答