代码之家  ›  专栏  ›  技术社区  ›  SmIqbal

为什么Unity 2020会给出错误CS1503?

  •  0
  • SmIqbal  · 技术社区  · 3 年前

    我是Unity和C#code的新手。我正在用Brackeys做一个基本的一步一步的教程,没有明显的原因,我得到了这个错误,上面写着“错误CS1503:参数1:无法从'float'转换为'UnityEngine.Vector3'”。错误出现在两个rb上。AddForce线。有人知道这里有什么问题吗?我使用的是Unity 2020.3.29f1个人版。

    谢谢你的帮助。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerMovement : MonoBehaviour
    {
    
        public Rigidbody rb;
    
        public float forwardForce = 2000f;
    
        void FixedUpdate()
        {
            rb.AddForce(0, 0, forwardForce * Time.deltaTime);
    
            if (Input.GetKey("d") )
            {
                rb.AddForce(500 * Time.deltaTime);
            }
    
            if (Input.GetKey("a") )
            {
                rb.AddForce(-500 * Time.deltaTime);
            }
        }
    }
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   derHugo    3 年前

    有不同的重载 AddForce .

    AddForce(Vector3 [, ForceMode])
    

    AddForce(float, float, float [, ForceMode])
    

    在哪里 ForceMode 这两个选项都是可选的。

    您只传递了一个参数 float 因此,编译器认为您想要使用第一个重载,并试图徒劳地转换给定的 浮动 变成一个 Vector3 显然没有找到任何实现方法来做这样的事情。

    你可能更想要

    rb.AddForce(Vector3.right * 500 * Time.deltaTime);
    

    rb.AddForce(500 * Time.deltaTime, 0, 0);