作为Vector3坐标的变量... 这是绘制一个四边形和射线的空游戏对象上脚本的一部分。 我可以绘制四边形,也可以绘制射线。我可以通过在Vector3中键入float来手动移动该射线。为什么不能在Vector3中使用“ planeWidth”或“ planeHeight”代替数字? 我在定义“ public Vector3 rayA1Pos ...”行时遇到错误。
//Define my Quad
public float planeWidth = 24f;
public float planeHeight = 34.5f;
//Declare rayA1
private Ray rayA1;
private RaycastHit hitA1;
public float rayDistance = 150f;
//rayA1's Vector3 coordinate at top-right corner of Quad
public Vector3 rayA1Pos = new Vector3( (**planeWidth**/2), (planeHeight/2), 0f);
仅显示一个使用示例,此方法有效: rayA1 = new Ray(transform.position + new Vector3(0f,150f,0f),transform.forward);
但是为什么不起作用:
rayA1 = new Ray(transform.position + rayA1Pos, transform.forward);
还是这个?
ray1 = new Ray(transform.position + new Vector3(planeWidth, planeHeight, 0f), transform.forward)
再一次,当我将它们放置为Vector3坐标时,“ planeWidth”和“ planeHeight”会引发错误。 谢谢阅读。这是我的第一个锅,但是我已经在这个论坛上找到了很多很棒的东西,所以我已经非常感谢你们!汤姆·G。
答案 0 :(得分:1)
我相信您会遇到以下错误:
字段初始化器无法引用非静态字段,方法或 财产
您不能使用变量在全局范围内以所需的方式初始化其他变量。您必须将planeWidth
和planeHeight
更改为静态。通常,您在类构造函数中进行初始化。在带有MonoBehaviour的Unity3D中,您通常使用Start()
或Awake()
方法来实现。
执行此操作:
public float planeWidth = 24f;
public float planeHeight = 34.5f;
public Vector3 rayA1Pos;
void Start()
{
rayA1Pos = new Vector3((planeWidth/2), (planeHeight/2), 0f);
}