Jump to content
Unity Insider Forum
Sign in to follow this  
Putenpizza

GameObject platzieren

Recommended Posts

Hallo zusammen.

Ich habe ein Button programmiert, wo jedes mal ein GameObject erstellt wird, wenn man draufklickt.

Das GameObject übernimmt die Position der Maus, damit ich es positionieren kann. Das Problem nun

ist, dass es nicht platziert wird. Ich möchte, dass wenn der Button geklickt wird und die Maus gedrückt gehalten wird, das Objekt erstellt wird aber erst platziert wenn losgelassen wird. Das hab ich versucht mit der Input.GetMouseButtonDown abfrage aber, jetzt wird das Objekt immer sofort platziert. Hier einmal der Code:

using UnityEngine;
using System.Collections;
public class PlatformPlacement : MonoBehaviour {
public GameObject gObject;
public Camera mycamera;
public Rect rect;
public bool isClicked = false;
public bool isCreated = false;
void Start () {
	mycamera = GetComponent<Camera>();
}

void Update () {
	if(isClicked)
	{
	   Placement();
	}
}
void OnGUI()
{
	if(GUI.Button(rect, "Platform"))
	{
		isClicked = true;
		isCreated = true;
	}
}
void Placement ()
{
	Vector2 mousePos = Input.mousePosition;
	Vector2 objectPos = mycamera.ScreenToWorldPoint(mousePos);
	if (isCreated)
	{
		Instantiate(gObject, objectPos, Quaternion.identity);
		isCreated = false;
	}
	if (Input.GetMouseButtonDown(0))
	{
		gObject.transform.position = objectPos;
	}
	else
	{
		isClicked = false;
	}
}
}

Ich hab erst vor kurzem mit Programmieren angefangen und weiß nun nicht mehr weiter

Ich hoffe ihr könnt mir Weiterhelfen.

 

MfG Putenpizza

Share this post


Link to post
Share on other sites

Hab es gerade ausprobiert und es klappt leider immernoch nicht :/

Wenn ich jetzt auf den Button klicke, dann wird das Objekt erst erstellt, wenn ich die Maus loslasse.

Ich möchte es aber noch positionieren bevor es erstellt wird.

Trotzdem Danke für deine Hilfe :)

Share this post


Link to post
Share on other sites

Naja mit erstellen meinst du natürlich das es dann an dem Ort platziert wird und nicht mehr von der Maus verschoben werden kann, war etwas unglücklich formuliert wenn du das meinst.

 

Wenn du auf deinen Button drückt, erstelltst du ein Gameobject(ich nenn es jetzt einfach mal Cube ersatzweise). Dieser bekommt jedes Update die Position deiner Maus übermittelt. So das der Cube immer da ist wo deine Maus ist. Wenn du jetzt die Mouse los lässt mit GetMouseButtonUp(), musst du einfach in dein GameObject verweis in deinen Script "Null" schreiben.

Bei dir wäre das gObject glaub ich also musst du einfach gObject = null; schreiben. Probier das mal.

 

Was vielleicht auch helfen könnte ist das video

Das sollte deinem Problem recht ähnlich kommen

 

MFG

GelegenheitsProgrammierer

Share this post


Link to post
Share on other sites

Es klappt leider immernoch nicht. Wenn ich es "null" setze, dann wird die GameObject Zuweisung vom Script gelöscht. Ich hab das jetzt etwas anders gelöst und zwar habe ich einfach abgefragt, ob die linke Maustaste betätigt wird. Ist zwar nicht genau das was ich wollte aber es klappt fürs erste. Aber etwas stört mich noch. Undzwar wenn ich jetzt mehr als ein Objekt erstellt habe und ich wieder auf den Button klicke, dann positionieren sich alle Objekte, da wo ich hingeklickt habe. Wie verhindere ich das ?

 

//EDIT

Ich hab eine neue Instance erstellt und das Problem somit gelöst:

myNewInstance = (GameObject)Instantiate(gObject, objectPos, Quaternion.identity);

Edited by Putenpizza

Share this post


Link to post
Share on other sites

Naja du rufst void Placement() ja wahrscheinlich nur einmal beim Button Klick auf.

Das heißt es wird nur dann wenn du den Button klickst die Position upgedated:

Vector2 mousePos = Input.mousePosition;

Vector2 objectPos = mycamera.ScreenToWorldPoint(mousePos);

 

Du kannst die zwei Zeilen in Update() packen, dann wird bei jeden update objectPos wieder upgedated.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×