无法将float转换为UnityEngine.Vector2

时间:2019-06-22 14:22:24

标签: c# unity3d

我正在尝试制作一个玩家动作脚本(在水中),但我不了解加力的工作原理。 我希望播放器在没有重力的环境中自由移动,并且希望播放器向上缓慢移动而不是向下缓慢移动。

这是我的代码:


public class PlayerMovementWater : MonoBehaviour
{

    public Rigidbody2D rb2;
    public int movementhorizontal = 10;
    public int movementverticalup = 5;
    public int movementverticaldown = 13;

    void FixedUpdate()
    {
        float xdirection = Input.GetAxisRaw("Horizontal");
        float ydirection = Input.GetAxisRaw("Vertical");

        if (xdirection == -1)
        {
            rb2.AddForce(-movementhorizontal * Time.deltaTime, 0f);
        }

        else if (xdirection == 1)
        {
            rb2.AddForce(movementhorizontal * Time.deltaTime; 0f);
        }

        if (ydirection == -1)
        {
            rb2.AddForce(0f, -movementverticaldown * Time.deltaTime);
        }

        else if (ydirection == -1)
        {
            rb2.AddForce(0f, movementverticalup * Time.deltaTime);
        }
    }
}`


1 个答案:

答案 0 :(得分:0)

您需要创建一个可在AddForce中使用的向量,而不是传递2个参数。

例如:

rb2.AddForce(new Vector2(-movementhorizontal * Time.deltaTime, 0f));