PlaceSelectionOnSurface
From Unify Community Wiki
(Difference between revisions)
(Updated to 1.2rc1) |
|||
Line 26: | Line 26: | ||
{ | { | ||
Transform[] transforms = Selection.GetTransforms(SelectionMode.Deep | | Transform[] transforms = Selection.GetTransforms(SelectionMode.Deep | | ||
− | SelectionMode.ExcludePrefab | SelectionMode. | + | SelectionMode.ExcludePrefab | SelectionMode.OnlyUserModifiable); |
if (transforms.Length > 0 && EditorUtility.DisplayDialog("Place Selection On Surface?", | if (transforms.Length > 0 && EditorUtility.DisplayDialog("Place Selection On Surface?", |
Revision as of 23:02, 19 December 2005
Author: Jonathan Czeck (aarku)
Description
This wizard takes the current selection and raycasts downward from each object and moves them to where the raycast hit. It is useful for placing a lot of items on top of a terrain.
It is not bulletproof to say the least, but it provides a starting point.
Usage
Place this script in YourProject/Assets/Editor and a menu item will automatically appear in the GameObject menu after it is compiled.
Note: This snippet requires at least Unity version 1.2
C# - PlaceSelectionOnSurface.cs
<csharp>
using UnityEngine; using UnityEditor; public class PlaceSelectionOnSurface : ScriptableObject { [MenuItem ("GameObject/Place Selection On Surface")] static void CreateWizard () { Transform[] transforms = Selection.GetTransforms(SelectionMode.Deep | SelectionMode.ExcludePrefab | SelectionMode.OnlyUserModifiable); if (transforms.Length > 0 && EditorUtility.DisplayDialog("Place Selection On Surface?", "Are you sure you want to place " + transforms.Length + ((transforms.Length > 1) ? " objects" : " object") + " on the surface in the -Y direction?", "Place", "Do Not Place")) { foreach (Transform transform in transforms) { RaycastHit hit; if (Physics.Raycast(transform.position, Vector3.down, out hit)) { transform.position = hit.point; Vector3 randomized = Random.onUnitSphere; randomized = new Vector3(randomized.x, 0F, randomized.z); transform.rotation = Quaternion.LookRotation(randomized, hit.normal); } } } } }
</csharp>