Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
放置三维对象(c#unity)具有3-4个节点(角点)的对象_C#_Unity3d_Augmented Reality_Arkit - Fatal编程技术网

放置三维对象(c#unity)具有3-4个节点(角点)的对象

放置三维对象(c#unity)具有3-4个节点(角点)的对象,c#,unity3d,augmented-reality,arkit,C#,Unity3d,Augmented Reality,Arkit,有没有办法用三个点来放置对象?我在现实世界中有三个或四个点(xyz位置)(我知道这些点),我想将我的新对象最好地放置(实例化)在这个坐标内 我试着正确放置物体,但没有好的效果 编辑: A B C D点将是长方体对象的角点(例如,砖)。 需要找到位置、旋转并设置长方体对象放置的比例,以便放置砖块插入B C D 我想创建一个长方体对象(我在asset文件夹中创建了一个预置对象)。 我知道现实世界的三个角落。我在这些点上创建了对象,命名为leftSphere、rightSphere、topSpher

有没有办法用三个点来放置对象?我在现实世界中有三个或四个点(xyz位置)(我知道这些点),我想将我的新对象最好地放置(实例化)在这个坐标内

我试着正确放置物体,但没有好的效果

编辑:

A B C D点将是长方体对象的角点(例如,砖)。 需要找到位置、旋转并设置长方体对象放置的比例,以便放置砖块插入B C D

我想创建一个长方体对象(我在asset文件夹中创建了一个预置对象)。 我知道现实世界的三个角落。我在这些点上创建了对象,命名为leftSphere、rightSphere、topSphere、backSphere。 如何找到放置长方体预制件的中心(位置)和旋转

public List<Transform> positions;
public GameObject cubloidObjectPrefabToPlace;

private GameObject topSphere; // A corner of real cuboid object in real world
private GameObject leftSphere; // B corner of real cuboid object in real world
private GameObject rightSphere; // C corner of real cuboid object in real world
private GameObject backSphere; // D corner of real cuboid object in real world


所以我在场景中有一个长方体物体,我知道边点和角点。我想将一个长方体对象(在资源中)而不是旧的长方体对象放置在完全相同的位置、旋转和缩放。如何设置对象的缩放、旋转和位置

positions.Add(edge1.transform);
positions.Add(edge2.transform);
positions.Add(edge3.transform);
positions.Add(edge4.transform);
positions.Add(edge5.transform);
positions.Add(edge6.transform);
positions.Add(edge7.transform);
positions.Add(edge8.transform);
设定比例

cubloidObjectPrefabToPlace.transform.localScale = new Vector3(
                               edge1.transform.localScale.x, 
                               edge2.transform.localScale.y, 
                               edge3.transform.localScale.z);
设定位置

Vector3 center = Vector3.zero;

foreach (var trans in positions)
{
    center += trans.position;

}
center /= positions.Count;
旋转

Instantiate(cubloidObjectPrefabToPlace, center, Quaternion.identity);

位置、旋转和比例仍然不正确

请添加代码。你能进一步解释一下吗。。
放置了什么。。。这是什么意思?如果你能看到一些你所期望的行为的截图,可能会有所帮助。欢迎来到SO!请阅读,我想你想把物体放在n个给定点的中心<代码>公开列表职位;公共游戏对象obj;void createAtCenter(){float x=0,y=0,z=0;foreach(位置中的变换p){x+=p.position.x;y+=p.position.y;z+=p.position.z;}x/=positions.Count;y/=positions.Count;z/=positions.Count;Vector3 pos=new Vector3(x,y,z);实例化(obj,pos,Quaternion.identity);}
@SaraKat是的,我想在资产中放置我的预置,我有这个对象。我已经尝试过这个解决方案,但它没有在中心创建我的对象。需要计算缩放和旋转?编写
Vector3 center=Vector3.zero更简单;foreach(var trans in positions){center+=trans.position;}center/=positions.Count
Vector3 center = Vector3.zero;

foreach (var trans in positions)
{
    center += trans.position;

}
center /= positions.Count;
Instantiate(cubloidObjectPrefabToPlace, center, Quaternion.identity);