我有一个带有makehuman的身体的场景,当用户触摸手臂时,我需要在身体的手臂周围添加一个简单的预制件(圆环)。
我试过了:
Instantiate
预制件位于用户触摸的位置,但预装臂位于手臂的边框中。Instantiate
手臂中央的预制件,使用以下代码: float radio = hit.transform.collider.radius; // the arm has a capsuleCollider
Ray r = Camera.main.ScreenPointToRay(Input.GetTouch(0));
Vector3 origin = r.origin;
float distance = (origin - hit.point).magnitude;
RaycastHit ou;
Vector3 position = hit.point;
Ray r2 = new Ray(r.GetPoint(distance + 10f), -r.direction);
if (cc.Raycast(r2, out ou, distance + 10f))
position = (hit.point + ou.point) / 2;
Instantiate(Prefab, position, Quaternion.identity);
尝试选择手臂的中心并初始化圆环。
第二种选择在某些情况下有效,但总体印象是错误的做法。
如何在对撞机周围添加预制件?或者,如何修改网格以添加可视指示符?
答案 0 :(得分:1)
这应该效果更好,看起来更干净:
Vector3 center = hit.transform.collider.bounds.center;
Instantiate(Prefab, center, Quaternion.identity);
hit.transform.collider是这个过程的重要组成部分,你得到了那个部分。 collider.bounds是围绕对撞机(http://docs.unity3d.com/ScriptReference/Collider-bounds.html)的边界框,而bounds.center是边界框({{3}})的中心。 bounds.center返回的Vector3是您要生成预制件的地方。
从那里,你应该能够将预制件旋转到所需的角度,并执行你想要的任何数量的操作。