簡體   English   中英

Unity2D Vector2不起作用

[英]Unity2D Vector2 does not work

所以我在Unity 2D中制作了Crossy Road克隆,在第34行出現錯誤。
我不確定我錯過了什么,但我需要另一個角度。 具體來說,我在此語句上遇到錯誤:

if (transform.position != new Vector2(curPosition.x, transform.position.y) + nextDir) 

並且所有內容都標記為紅色。

public class PlayerController : MonoBehaviour
{
    public Vector2 nextDir;
    public float jumpForce = 100;
    public float speed = 5;
    public float speedRot = 100;
    public float rotationOffset;
    Rigidbody rb;
    public Vector2 curPosition;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        curPosition = transform.position;
    }

    void Update()
    {
        if (transform.position != new Vector2(curPosition.x, transform.position.y) + nextDir)
        {
            transform.position = Vector2.MoveTowards(transform.position, new Vector2(curPosition.x, transform.position.y) + nextDir, speed * Time.deltaTime);
        }
        else
        {
            nextDir = Vector2.zero;
            curPosition = transform.position;
            curPosition.x = Mathf.Round(curPosition.x);
            curPosition.y = Mathf.Round(curPosition.y);
            if (Input.GetAxisRaw("Horizontal") != 0)
            {
                nextDir.x = -Input.GetAxisRaw("Horizontal");
                Move();
            }
            else if (Input.GetAxisRaw("Vertical") != 0)
            {
                nextDir.y = Input.GetAxisRaw("Vertical");
                Move();
            }
        }
    }

    void Move()
    {
        rb.AddForce(0, jumpForce, 0);
    }
}

可以通過在PlayerController頂部添加RequireComponent屬性來解決第一個錯誤(有關缺​​少Rigidbody2D組件的問題):

[RequireComponent(typeof(Rigidbody2D)]
public class PlayerController : MonoBehaviour
{
    // rest of your code

而您正在嘗試將3軸的對象與2軸的對象進行比較

    void Update()
    {
        // here you're trying to compare Vector3 ( transform.position )
        // to Vector2, (3 axis with 2 axis)
        //if (transform.position != new Vector2(curPosition.x, transform.position.y) + nextDir)
        // change it to this 
        Vector2 cmp = new Vector2(curPosition.x, transform.position.y) + nextDir;
        if(cmp[0] != transform.position[0] || cmp[1] != transform.position[1])
        {
            transform.position = Vector2.MoveTowards(transform.position, new Vector2(curPosition.x, transform.position.y) + nextDir, speed * Time.deltaTime);
        }
        // rest of the update's body
    }

    // rest of your code ...
}

暫無
暫無

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

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