Jump to content
Unity Insider Forum

Ausrichten am Raster


Recommended Posts

Hallo Leute,

 

irgendwie komme ich immer noch nicht mit dem Unity Raster zurecht. Ist es nicht irgendwie möglich das sich Objekte am Raster ausrichten. Wenn ich also ein Objekt habe das genau 1 Einheit hoch und breit ist, das sich dieses Objekt beim bewegen im Editor immer innerhalb eines Rasterfelds ausrichtet? Es gibt ja die Snap Funktion aber irgendwie klappt das nicht so richtig oder ich mache einfach etwas falsch. :/

 

LG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wenn du die SnapSettings aufmachst, dein objekt ausgewählt hast kannst du Snap X / Y etc machen und die rastergröße einstellen dann richtet der das Objekt am Raster aus.

 

Aber weil ich die Snap funktion auch nicht mag hab ich mir ein kleines script geschrieben das alle Objekte mit bestimmten tags snappt .. ABER VORSICHT !! Damit kannst du deine ganzen objekte verschieben !! (wenn du das falsche tag auswählst bzw die falsche tilegröße und Snap anmachst!)

 

using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class GridSnapEditor : MonoBehaviour {
public enum SnapTag {
// hier deine eigenen tags eintragen.
 Building,
 GridTile,
 Creep
}
public SnapTag snapTag;
public bool snapToGrid = false;

public int cellSize = 10;

public Vector3 offset;
public GameObject[] buildings;
public Vector3 SnapPositionToGrid(Vector3 pos)
{

 Vector3 clampedPosition = new Vector3();

 clampedPosition.x = Mathf.RoundToInt(pos.x/cellSize);
 clampedPosition.y = Mathf.RoundToInt(pos.y/cellSize);
 clampedPosition.z = Mathf.RoundToInt(pos.z/cellSize);

 //clampedPosition =clampedPosition * cellSize + offset;
 Debug.Log("clamped " +clampedPosition.ToString());

 clampedPosition =clampedPosition * cellSize;

 return clampedPosition;

}

void Update () {
 if(snapToGrid)
 {
  allObjs= GameObject.FindGameObjectsWithTag(snapTag.ToString());
  Debug.Log("Snapping");
  foreach (GameObject go in allObjs) {
go.transform.position = SnapPositionToGrid(go.transform.position);
  }
 }
}
}

 

Das script einfach auf irgendein gameObject ziehen, das tag ausählen, grid size einstellen und snapToGrid anmachen....

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...