C# 如何根据第一个对象';统一中的矢量3?
这感觉像是一个超级noob问题,但是,基本上我正在做一个项目,用户基本上放下一个对象,我想在对象的右侧或左侧实例化另一个对象,但是根据用户面对的方向,沿着正确的x或z 例如,如果用户将一个对象放置在(0,0,1)处,而用户位于(0,0,0),则我希望下一个对象位于相同的z平面,但具有不同的x。但是,我不知道用户要将对象放置在哪里,它可以放置在(1,0,0)处,在这种情况下,我希望操作z变量而不是x 真正的问题是,我如何知道需要更改哪个变量,x或/和z 我可以得到四个基本方向,但是我如何得到这条线上的所有值呢?还是有更好的方法C# 如何根据第一个对象';统一中的矢量3?,c#,unity3d,vector,C#,Unity3d,Vector,这感觉像是一个超级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);
}
}
您可以使用相机的
变换组件中的向前
和向右
向量:
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;
您可以使用相机的变换组件中的向前
和向右
向量:
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;
他们可以只把物体放在如图所示的那条线上,还是放在用户周围圆圈边缘的任何地方?他们可以把物体放在用户看的任何地方。通常,物体在用户前方1米处。我不确定代码在统一体中到底是什么样的,但数学很简单:if(magnificatesqr((Abs(transofrm.forward)+Abs(位置))-Abs(playerPos))>震级sqr((Abs(transofrm.right)+Abs(position))-Abs(playerPos)))position+=transform.forward else position+=transform.right
。基本上,如果玩家更靠近对象forward/-forward,那么它会跟随你想沿着transform放置一个对象。right.他们只能放置在如图所示的那条线上,还是放在用户周围圆圈边缘的任何地方?他们可以将对象放置在user正在查看的对象通常在用户面前1m我不确定代码在unity中的具体外观,但数学相当简单:if(magnitySQR((Abs(transofrm.forward)+Abs(position))-Abs(playerPos))>magnitySQR((Abs(transofrm.right)+Abs(position))-Abs(playerPos)))position+=transform.forward else position+=transform.right
。基本上,如果玩家更靠近对象forward/-forward,那么它会跟随你,你会想沿着变换放置一个对象。对。我想得太多了,哈哈,我想得太多了,太多了,哈哈,太多了