这感觉就像一个超级noob问题但是,基本上我正在研究用户基本放下一个对象的项目,我想在对象的右边或左边实例化另一个对象但是沿着正确的x或z取决于用户面向的方向。
例如,如果用户将对象放在(0,0,1)并且用户位于(0,0,0),我希望下一个对象位于同一个z平面但具有不同的x。但是,我不知道用户将放置对象的位置,它可以放在(1,0,0)处,在这种情况下,我想要操纵z变量而不是x。
真正的问题是我怎么知道我需要改变哪个变量,x或/和z?
我可以获得四个基本方向,但我如何获得沿线的所有值?或者有更好的方法吗?
public Vector3 GetNextPos(Vector3 position)
{
if (Camera.main.transform.rotation.y == 0)
{
return position += new Vector3(-0.1f, 0, 0);
}
if (Camera.main.transform.rotation.y == 90)
{
return position += new Vector3(0, 0, 0.1f);
}
if (Camera.main.transform.rotation.y == 180)
{
return position += new Vector3(0.1f, 0, 0);
}
if (Camera.main.transform.rotation.y == -90)
{
return position += new Vector3(0, 0, -0.1f);
}
}
答案 0 :(得分:2)
您可以使用相机forward
组件中的right
和transform
向量:
Vector3 position = Camera.main.transform.position;
Vector3 forward = Camera.main.transform.forward;
Vector3 left = -Camera.main.transform.right;
//first object is one unit in front of the camera
Vector3 firstObjectPosition = position + forward;
//second object is one unit left of the first object
Vector3 secondObjectPosition = firstObjectPosition + left;