c#中对象旋转的问题

A problem with the rotation of objects in c#

using System.Collections.Generic;
using UnityEngine;

public class RotationPlasmaCast : MonoBehaviour
{
    float LockPos = 0;
    public Transform Squid;
    float SquidRot = Squid.z;

    void FixedUpdate()
    {
        transform.rotation = Quaternion.Euler(LockPos, LockPos, SquidRot.rotation);
    }
}

我使用此代码使我的射弹 (PlasmaCast) 的旋转与我的播放器 (Squid) 相同。 Unity告诉我:

A field initializer cannot reference the non-static field, method, or property 'RotationPlasmaCast.Squid

有谁知道为什么 Unity 给我一个错误?

假设您想存储 Squid 的 Z 轴旋转以供代码中的其他地方使用,您可以将初始旋转设置为 0,并在 FixedUpdate() 函数期间更新该值以匹配其当前旋转并将其传递给你的变换是这样的:

using System.Collections.Generic;
using UnityEngine;

public class RotationPlasmaCast : MonoBehaviour
{
    float LockPos = 0;
    public Transform Squid;
    float SquidRot = 0;

    void FixedUpdate()
    {
        SquidRot = Squid.rotation.z;
        transform.rotation = Quaternion.Euler(LockPos, LockPos, SquidRot);
    }
}

值得注意的是,根据游戏对象的层次结构,您可能需要使用 'localRotation' 而不是 'rotation'