Bei rechtsklick Objekt platzieren - Unity 3D?
Hallo. Wie programmiere ich dass wenn ich einen Rechtsklick mache, an der Position wo ich hingecklickt habe also auf der Plane ein Objekt platziert wird?
(Unity 3D)
2 Antworten
Mit GetMouseButtonDown kannst du ermitteln, ob und welche Maustaste gedrückt wurde.
void Update()
{
if (Input.GetMouseButtonDown(1))
{
// right mouse button was clicked ...
}
}
Über Input.mousePosition gelangst du an die aktuellen Koordinaten des Mauszeigers. Diese müssen noch umgerechnet werden, sodass du die Koordinaten in Relation zur Spielwelt bekommst.
Das könnte ungefähr so aussehen:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 position;
if (yourPlane.Raycast(ray, out float distance))
{
position = ray.GetPoint(distance);
// ...
}
Andere Verfahrensweisen (wie du bspw. einen Mausklick auf einem Terrain ermittelst) kannst du hier nachlesen.
Ein GameObject kannst du mittels seines Konstruktors kreieren und anschließend über dessen transform-Property bewegen.
Besser wäre aber vermutlich ein Prefab, welches sich mit der Instantiate-Methode erstellen und gleich auch an die entsprechende Startposition setzen lässt.
Ich hab es nicht getestet:
void Update()
{
Ray ray = Camera.main.ScreenPointToRay(input.mousePosition);
if(Physics.Raycast(ray, out var hit) && Input.GetMouseButtonDown(1))
{
Vector3 blockPosition = hit.transform.position + hit.normal;
GameObject Cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
Cube.transform.position = blockPosition;
}
}
Hab es jetzt so gemacht, aber "Plane.Raycast" und "position" markiert er mir als Fehler: