我正在尝试创建一个2D游戏,需要使用具有完美对称性的2D多边形碰撞器,因此我想手动/数值设置坐标,而不是使用鼠标。
怎么做呢?
我想游戏可以在启动时调整坐标,但如果可能的话,我更希望在“设计时间”就设置正确。另外,如果我要在启动时以编程方式进行操作,我会感激提供如何做以及相应链接的教程。
我正在尝试创建一个2D游戏,需要使用具有完美对称性的2D多边形碰撞器,因此我想手动/数值设置坐标,而不是使用鼠标。
怎么做呢?
我想游戏可以在启动时调整坐标,但如果可能的话,我更希望在“设计时间”就设置正确。另外,如果我要在启动时以编程方式进行操作,我会感激提供如何做以及相应链接的教程。
对于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);
}
}
[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);
}
}