試圖創建一個2D遊戲,我需要一個具有精確對稱性的2D多邊形對撞機,所以我想用手/數字來設置座標,而不是使用鼠標。手動編輯Unity3D碰撞器座標?
這怎麼辦?
我想遊戲可以在啓動時調整座標,但如果可能的話,我寧願讓它們糾正「設計時間」。此外,如果我要在啓動時以編程方式執行此操作,我將非常感謝這樣的指導或合適的鏈接。
試圖創建一個2D遊戲,我需要一個具有精確對稱性的2D多邊形對撞機,所以我想用手/數字來設置座標,而不是使用鼠標。手動編輯Unity3D碰撞器座標?
這怎麼辦?
我想遊戲可以在啓動時調整座標,但如果可能的話,我寧願讓它們糾正「設計時間」。此外,如果我要在啓動時以編程方式執行此操作,我將非常感謝這樣的指導或合適的鏈接。
您可以在腳本中使用PolygonCollider2D.points 設置撞機的頂點,也可以在檢查啓用調試模式和手動輸入,但是這僅僅是爲了統一4:
對於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);
}
}
我通過創建其他腳本來添加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);
}
}
呃... ...試過調試模式,但仍然無法訪問的點。我正在使用Unity 5.0.1f1。版本差異還是我需要做更多比設置調試模式? –
我的截圖是從4.6.4f1開始的,看起來他們統一禁用了這個功能。5.更正了答案。 – Olivia
不錯!儘管如此,Semms將刪除標準圖形編輯模式的按鈕。任何方式都有? –