Jump to content
Unity Insider Forum

Links/Rechts Turn Animationen einbinden


designtalks

Recommended Posts

Hallo,

 

ich probier seit längerem meinem Player Controller beizubringen wie er Turn Animations abspielen soll. Der Player wird über die Maus rotiert. Das funktioniert auch Einwand frei.

 

		Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
	RaycastHit floorHit;
	if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask))
	{
		playerToMouse = floorHit.point;
		playerToMouse.y = transform.position.y;
		if (MousePosition != null)
		{
			MousePosition.transform.position = playerToMouse;// + transform.position;
		}
		Quaternion newRotation = Quaternion.LookRotation(playerToMouse - transform.position);
		if (!LockLook)
		{			  
			transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, turnSpeed * Time.fixedDeltaTime);
		}
	}

 

Jedoch komm ich einfach nicht weiter wie ich die Turn Richtung also Rechts oder Links herausfinden kann. Ich denk das die Lößung eigentlich recht simpel sein müsste.

 

Turn Rechts = Spitzer Sinus

Turn Links = Stumpfer Sinus

 

Würde mich für jeden Tipp freuen.

Schönen Abend noch.

post-5919-0-48335900-1476031130_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nabend,

 

ich habe dein Thema gesehen. Vielleicht hängst du noch vor der Lösung. Ich kann dir folgendes raten. Da du die Rotation per Maus steuerst, ist es eigentlich recht einfach. Schau dir mal die Input.GetAxis Sachen an. Bei Mouse X und Y bekommst du wirklich Werte von 0 bis x - je nachdem wie schnell du die Maus bewegst. In deinem Animator brauchst du einen sogenannten Blend Tree. Damit kannst du dann deine Bewegungen z.b im Stand blenden. Dann machst du ein 'Custom Threshold Setup' - also ab welchem Wert er welches abspielen soll. Rechts wo man die Animationen reinzieht, im Blend Tree, kannst du auch einstellen nach welchem Parametern er gehorchen soll. Da wären wir auch schon bei den Parametern. Du brauchst einen Parameter vom Typ Float. Nennen kannst du ihn gerne Hanst Peter Horst - wichtig ist nur dass du einen hast und vom Typ Float eben.

 

So könnte dein setup aussehen:

 

1. TurnL - Threshold -1

2. Idle - Threshold 0

3. TurnR - Threshold +1

 

In deinem Script musst du nun wie gesagt die Achse abgreifen und dann zum Animator übertragen. Du kannst natürlich den ' Rohwert' zu deinen Vorstellungen 'vorbereiten' und dann das vorbereitete Ergebnis als float an den Animator geben.

 

Ich hoffe es war noch verständlich - ist sehr spät ich sollte schlafen:D

Wenn du noch Hilfe brauchst einfach melden :b

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich bin 100%ig sicher was du das genau vorhast. Du rotierst ja bereits mit der Maus aber warum nochmal 90 Grad drehen? Oder soll es sich bis 90 Grad nicht drehen, aber wenn es drüber ist schon?

Weil Turnrichtung ist auch gleichzeitig Mausrotationsrichtung. Deswegen verstehe ich das nicht :D

 

Aber zu Drehung

float heading = Mathf.Atan2(x, y);
transform.rotation = Quaternion.Euler(0f, heading * Mathf.Rad2Deg, 0f);

heading ist der Winkel wo du hinguckst in radiant. Muss man also als ins Degree konventieren.

x und y stehen für die Inputs.

 

Das ganz ist in Weltkoordinaten.

 

Das heißt (0,1) wäre zum Beispiel nach oben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...