2016-08-29 4 views
0

ich diesen Code für meinen MainCamera verwendet für nach dem Spieler in meinem 2d Spiel in Unity5:Follow-Spieler durch die Kamera in 2D-Spielen

using UnityEngine; 
using System.Collections; 

public class CameraFollow : MonoBehaviour { 

    public float dampTime = 0.15f; 
    private Vector3 velocity = Vector3.zero; 
    public Transform target; 

    // Update is called once per frame 
    void Update() 
    { 
     if (target) 
     { 
      Vector3 point = GetComponent<Camera>().WorldToViewportPoint(target.position); 
      Vector3 delta = target.position - GetComponent<Camera>().ViewportToWorldPoint(new Vector3(0.5f, 0.5f, point.z)); //(new Vector3(0.5, 0.5, point.z)); 
      Vector3 destination = transform.position + delta; 
      transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, dampTime); 
     } 

    } 
} 

Es funktioniert gut, aber Spieler ist in der Mitte des Bildschirms Allways . Ich bin wan Player in Bildschirm und mein Sprite für Show Erde meines Spiels wird unter der Kamera bleiben. Ich meine, besser in folgenden Bilder:

, was ich will:

enter image description here

Das Ergebnis:

enter image description here

Antwort

1

Sie können eine hinzufügen senkrecht zur Berechnung versetzt. Einfach das Hinzufügen zu destination sollte das tun, denke ich.

Andernfalls können Sie auch ein leeres Spielobjekt zum Spielobjekt des Spielers hinzufügen und dieses als Ziel verwenden.

Eine Sache, die Sie beachten müssen, ist die Auflösung.

+0

ok ich habe einen öffentlichen Parameter OffsetOfCamera und diesen Code 'destination.y + = someOffset;' hinzugefügt. Jetzt kann ich die Kamera von der Einheit auf und ab bewegen. –

Verwandte Themen