Jump to content
Unity Insider Forum

Diverse Probleme


WladiGe

Recommended Posts

Guten Abend!

 

Ich habe wie jeder anderer Anfänger einige Probleme mit der Spielentwicklung und ich hoffe einige von euch können mir helfen ;)

 

Ich bin gerade bei dem Punkt, Animationen angelangt und befasse mich nun den halben Tag damit. Ich könnte mir die Harre ausreißen. Ständig gibt es Probleme:

 

1. Einen Charakter bewegen und dabei eine Animation abspielen

 

using UnityEngine;
using System.Collections;
public class Transformscript : MonoBehaviour {

public Vector3 _movement;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
  _movement = Vector3.zero;

 if( Input.GetKey(KeyCode.W ) )
 {
  _movement.z += 1f;
  this.animation.Play ("walk_00");
 }
 else if (Input.GetKeyUp(KeyCode.W))
 {
  this.animation.Stop("walk_00");
  this.animation.Play ("idle_00");
 }
 if( Input.GetKey(KeyCode.Space ) )
 {
  this.animation.Play ("jump_10");

 }

 transform.Translate( _movement * Time.deltaTime );
}
}

 

Nach vorne gehen und springen klappt (einigermaßen), aber wie soll ich das Script so schreiben, dass der Charakter sich um 180 Grad dreht wenn ich "S" drücke und dabei die selbe Animation ("Walk_00") beibehält und sich natürlich auch nach hinten bewegt?

 

2. Es gibt ja "legacy"-Animationen und "Mecanim"-Animationen. Wo liegt der Unterschied zwischen den beiden?

 

3. Wenn ich meinen Charakter mit einem Rigidbody versehe fällt er durch den Terrainboden. WIESO?

 

:wacko:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Transform.Translate ist für frei bewegliche Objekte ziemlich ungeeignet, da es keine Kollisionsabfragen macht. Wenn man mit Transform.Translate in eine Wand läuft, dann kriegt der Rigidbody das während der nächsten Physik-Phase bermutlich mit und springt raus, aber das Ganze hat dann u.U. unangenehme Nebeneffekte. Für Menschen ist in den meisten Fällen ein CharacterController (kurz: CC) und dessen Methode Move() zu empfehlen.

 

Zu 1.: Dem CC würde ich keinen MeshRenderer geben, sondern die sichtbare Figur als dem CC untergeordnetes GameObject bauen. Dieses Unterobjekt kannst du dann in die Richtung drehen, in die die Figur läuft, ohne dabei den CC zu drehen und dir damit einen haufen Vektorrechnungs-Probleme einzufangen.

 

2.: Legacy, zu deutsch "Vermächtnis", ist das alte System. Es steckt immer noch in Unity drin, obwohl Mecanim neuer und besser ist, weil die Gurken bei Unity Tech. immer noch einige Dinge micht in Mecanim eingebaut haben, die das alte System konnte. Damit ist Mecanim eben doch nicht immer besser. Wenn du aber nicht zufällig auf so einen Sonderfall stößt, ist Mecanim besser, da Animation States etwas künstlerisches sind und damit davon profitieren, mit einem visuellen Editor erstellt zu werden.

 

3.: Haben sowohl den Terrain, als auch deine Figur einen Collider? Ein Rigibody stellt nur das abstrakte Konzept eines physikalischen Körpers dar; die physikalische Form des Objekts muss durch Collider gebaut werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

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

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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

Lädt...
×
×
  • Neu erstellen...