手动编辑Unity3D对撞机坐标?

时间:2015-04-23 09:46:32

标签: unity3d collision-detection unity3d-2dtools

尝试创建一个2D游戏,我需要一个精确对称的2D多边形对撞机,所以我想用手/数字设置坐标,而不是使用鼠标。

如何做到这一点?

我认为游戏可以在启动时调整坐标,但是如果可能的话,我更愿意让它们正确并设计时间"此外,如果我在初创时以编程方式执行此操作,我会非常感谢您提供帮助的方法或合适的链接。

2 个答案:

答案 0 :(得分:11)

您可以使用PolygonCollider2D.points在脚本中设置碰撞顶点  或者您可以在检查器中启用调试模式并手动输入,但这仅适用于unity 4:

enter image description here

对于Unity 5,您可以使用此解决方法。将脚本放在Editor文件夹下面。

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(PolygonCollider2D))]
public class PolygonCollider2DEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        var collider = (PolygonCollider2D)target;
        var points = collider.points;
        for (int i = 0; i < points.Length; i++)
        {
            points[i] = EditorGUILayout.Vector2Field(i.ToString(), points[i]);
        }
        collider.points = points;
        EditorUtility.SetDirty(target);
    }
}

答案 1 :(得分:2)

我通过创建要与PolygonCollider2D一起添加的其他脚本来解决这个问题。这个额外的脚本编辑多边形点。因此,这是一个编辑其他脚本和“编辑碰撞器”按钮的脚本。

打印:http://i.stack.imgur.com/UN2s8.jpg

[RequireComponent(typeof(PolygonCollider2D))]
public class PolygonCollider2DManualPoins : MonoBehaviour { }

[UnityEditor.CustomEditor(typeof(PolygonCollider2DManualPoins))]
public class PolygonCollider2DManualPoinsEditor : UnityEditor.Editor {
    public override void OnInspectorGUI() {
        base.OnInspectorGUI();
        var collider = ((PolygonCollider2DManualPoins)target).GetComponent<PolygonCollider2D>();
        var points = collider.points;
        for (int i = 0; i < points.Length; i++){
            points[i] = UnityEditor.EditorGUILayout.Vector2Field(i.ToString(), points[i]);
        }
        collider.points = points;
        UnityEditor.EditorUtility.SetDirty(collider);
    }
}