unity3d 错误CS1519(标记““无效;“)和CS1001(预期标识符),矢量3问题(Brakeys多人教程ep 2)

jv4diomz  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(433)

视频中的脚本最初有很多错误,我已经尽了最大的努力来修复代码,并尽可能减少错误
我当前脚本中的错误包括:资产\播放器马达.cs(9,14):错误CS1519:类、结构或接口成员声明中的标记“=”无效
资产\播放器马达.cs(9,32):错误CS1001:应为标识符
我的剧本是:

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]

public class PlayerMotor : MonoBehaviour
{
    
    private Vector3 velocity;
    velocity = new Vector3(zero);

    private Rigidbody rb;

    void Start() 
    {

        rb = GetComponent<Rigidbody>();

    }

    //Gets a movement vector
    public void Move (Vector3 _velocity) 
    {

        velocity = _velocity;
        

    }

    //Run every physics iteration
    void FixedUpdate ()
    {

        PerformMovement();

    }

    //Perfrom movement based on velocity variable
    void PerformMovement() 
    {

        if (velocity != Vector3.zero){
            rb.MovePosition(rb.position + velocity * Time.fixedDeltaTime);
        }

    }
}
wlwcrazw

wlwcrazw1#

1.你不能只在类体内写代码,比如:velocity = new Vector3(zero);。你能做的,也可能是你认为你能做的,是在声明中初始化变量:private Vector3 velocity = new Vector3(zero);不过,这有更多的问题。

  1. Vector3没有构造函数,它只接受一个参数。
    1.即使是这样,您也必须将Vector3零声明为静态变量。
    1.总而言之,只要在需要的地方使用Vector3.zero,自己声明它是没有意义的。
oprakyz7

oprakyz72#

private Vector3 velocity;
velocity = new Vector3(zero);

这不起作用。您可以这样写

private Vector3 velocity = Vector3.zero;

或者在Start这样的方法中赋值:

private Vector3 velocity;

void Start()
{
    rb = GetComponent<Rigidbody>();
    velocity = Vector3.zero;
}

另外,new Vector3(zero)也不起作用,因为你从来没有定义过zero。这可能是Vector3.zero的拼写错误。另一个选择是new Vector3(0, 0, 0)

相关问题