Jump to content
Unity Insider Forum

Objekt bei stillstand auf einen fixen wert setzen möglich?


Recommended Posts

Hi leute.

 

Ist es möglich ein objekt (würfel) nach der bewegung auf einen fixen wert bei stillstand zu setzen?

undzwar habe ich ein fall script welches würfel Fallen lässt und diese aber dann je nach geschwindigkeit mal auf z.b. -0.0278 oder -0.0642 etc landen anstelle von genau 0

Das sieht dann bei genauem hin sehen mist aus weil die texturen dann nicht mehr so schön nebeneinander passen 😐

 

Die würfel sind 1x1x1 groß und haben für die ground abfrage einen raycast wo die abfrage auch ganz oben im script steht aber irgendwie bekomme ich nie den exakten wert von 0 bei stillstand der würfel.

Ich weis auch leider nicht genau wo nach ich suchen könnte.

 

Deshalb wollte ich fragen ob es möglich ist den wert bei stillstand auf den nächsten wert wie zb 0 oder 1 oder 2 etc zu setzen?

 

Ich hoffe ihr könnt mir da weiter helfen.

 

Vielen dank schonmal

Link to post
Share on other sites
vor 43 Minuten schrieb chrische5:

Hallo

 

Setz doch die position der Transform Komponente per Script. Das geht!

 


this.transform.position = new Vector3(0,0,0);

 

Christoph

 

 

Hi,

 

das habe ich ja quasi versucht. 😕

 

die bewegung wird ja von...

 " transform.Translate(Vector3.down * Time.deltaTime * moveSpeed, Space.World);"

...gesteuert und die liefert am boden aber immer wegen der geschwindigkeit einen endwert mit einer komma stelle da der raycast und die verarbeitung ja auch einige millisekunden benötigen.

 

Da die boden höhe auch nicht immer gleich ist kann ich den wert auch nicht wirklich fix setzen mit einem "new Vector" 😔

 

Link to post
Share on other sites

Ich denke ich hab nun eine funktionierende lösung gefunden.

 

ich habe es jetzt so geregelt das die Y achse vom objekt ausgelesen wird, dann verglichen wird ob sich diese zwichen den werten befindet und dann wird danach die Y achse neu festgelegt.

 

if (Y >= -0.5f && Y <= 0.5f) 
		{
			Y_Set_Position = 0.0f;
		}
                            
	transform.position = new Vector3(X, Y_Set_Position, Z);

 

Es ist nicht das perfekteste aber mir fällt sonst keine lösung ein die funktioniert 😊

 

Link to post
Share on other sites

Ich lagere häufig verschiedene Bewegungen in eine Coroutine aus. Dabei wird in einer vorgegebenen Zeit eine Bewegung / Drehung etc. vom Zustand A zum Zustand B durchgeführt. Am Ende ist aber nie das wirkliche Ziel erreicht, sondern immer nur fast (so wie du es oben geschrieben hast). Deshalb setzte ich nach der vorgegebenen Zeit die Werte wie von @chrische5geschildert manuell innerhalb der Coroutine auf meinen wirklich gewollten Wert.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...