Jump to content
Unity Insider Forum

Head Bobbing Effect


MustafGames

Recommended Posts

Grüße,

ich bin gerade auf der Suche nach meinem alten Wackel-Effekt wenn man in der Ego-Perspektive läuft, nur in den 100ten von Ordnern finde ich diesen nicht mehr.

Hat jemand von euch schon sowas mal gemacht?

Wichtig ist das die Kamera wackelt aber ihre Position nicht verändert, den diese wird ja über den Ego-Perspektive Script gesteuert.

 

Mfg Mustaf

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Ich habe es so gemacht, eine If abfrage ob ein Ereignis z.b. eine Explosion eingetreten ist wenn ja dann starte eine Coroutine welche die Cameraparameter verändert.

Nach der Beendigung der Coroutine übernimmt das Camerascript die Cameraführung wieder.

 

Gruß Jog

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier hab ich was Altes, was ursprünglich mal in JS geschrieben war.

Das Script greift natürlich auf die Y Position der Camera zu und verändert diese. Wenn die Kamera ein Child von etwas ist, dann ist das ja nicht schlimm.

 

using UnityEngine;
using System.Collections;

public class HeadBopperC : MonoBehaviour {
	float timer=0.0f;
	public float bobbingSpeed = 0.12f; // wackelgeschwindigkeit
	public float bobbingAmount = 0.2f;  // halbe amplitude
	public float midpoint = 2f; //start position oder norm position der camera
	float horizontal;
	float vertical;

  void LateUpdate () {

      float waveslice = 0.0f; 
      if(Input.GetAxis("Horizontal") !=0f || Input.GetAxis("Vertical") !=0f) {
        horizontal = Input.GetAxis("Horizontal"); 
        vertical = Input.GetAxis("Vertical"); 
      }
      if (Mathf.Abs(horizontal) == 0f && Mathf.Abs(vertical) == 0f) { //evtl. plus todeszone
        timer = 0f; 
      } 
      else { 
        waveslice = Mathf.Sin(timer); 
        timer = timer + bobbingSpeed*Time.deltaTime; 
      }
      if (timer > Mathf.PI * 2f) { 
        timer = timer - (Mathf.PI * 2f); 
      } 
      if (waveslice != 0f) { 
        float translateChange = waveslice * bobbingAmount; 
        float totalAxes = Mathf.Abs(horizontal) + Mathf.Abs(vertical); 
        totalAxes = Mathf.Clamp (totalAxes, 0.0f, 1.0f); 
        translateChange = totalAxes * translateChange; 
        transform.localPosition= new Vector3(transform.localPosition.x,midpoint + translateChange, transform.localPosition.z);
      } 
      else { 
        transform.localPosition= new Vector3(transform.localPosition.x,midpoint, transform.localPosition.z);
      } 
    }
}

Sollte so gehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Zer0Cool Keine Ahnung, ob das 1st Person ViewScript sowas hatte. Ich kann mich da nicht dran erinnern.
Nur wenn die Bewegung sich auch noch zur Seite neigt, dann ist  klar, dass es dich gestört hat. ;)
@MustafGames Genau, einfach die Kamera etwas anderem unterordnen, das dann von deinem script gesteuert wird. Der Wackeleffekt ist dann einfach obendrauf.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...