簡體   English   中英

rb.AddForce 但對於 2D 怎么辦? 統一C#

[英]How to do rb.AddForce but for 2D? Unity C#

我正在制作一個 2D 游戲,你控制一個盾牌,你必須阻止墜落的障礙物到達基地。 我知道要移動您使用rb.addforce的東西。 但是,當我對 2D 執行相同操作時,它不起作用。 我想你使用 Vector2 而不是使用 Vector3,但它給了我這兩個錯誤: Assets\Movement.cs(16,25): error CS1503: Argument 1: cannot convert from 'float' to 'UnityEngine.Vector2'而這個: Assets\Movement.cs(16,25): error CS1503: Argument 1: cannot convert from 'float' to 'UnityEngine.Vector2' for each time I write the line。 這是我的完整代碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{
    public Rigidbody2D rb;
    public Collider2D collider;

    public float moveSpeed = 0.1f;

    private void Update() 
    {
        if (Input.GetKey("w"))
        {
            rb.AddForce(0f, moveSpeed);
            Debug.Log("w");
        }

        if (Input.GetKey("s"))
        {
            rb.AddForce(0f, moveSpeed);
            Debug.Log("s");
        }
    }
}

Rigidbody2D.AddForce不采用兩個float參數,而是像往常一樣采用Vector2ForceMode2D ,如果您不傳入,后者的默認值是ForceMode2D.Force

所以你的代碼應該是

//          = new Vector2 (0,1) * moveSpeed
//          = new Vector2 (0, moveSpeed)
rb.AddForce(Vector2.up * moveSpeed);

...

// I assume in the second case you rather want to go down so
//           = new Vector2 (0, -1) * moveSpeed
//           = new Vector2 (0, -moveSpeed)
rb.AddForce(Vector2.down * moveSpeed);

順便說一句,我寧願不要Debug.Log Update中的每一幀,它非常昂貴。

您可以在rb.AddForce (new Vector2(0,moveSpeed));中添加一個新的Vector2

這是更新的代碼:

 public class Movement : MonoBehaviour
    {
        public Rigidbody2D rb;
        public Collider2D collider;

        public float moveSpeed = 0.1f;

        private void Update()
        {
            if (Input.GetKey("w"))
            {
                rb.AddForce(new Vector2(0f, moveSpeed));
                Debug.Log("w");
            }

            if (Input.GetKey("s"))
            {
                rb.AddForce(new Vector2 (0f, moveSpeed));
                Debug.Log("s");
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM