Jump to content
Unity Insider Forum

Verbundene Objekte einzeln rotiern


Anndi

Recommended Posts

Zieh die Kamera aus deinem Charakter heraus (die Kamera liegt dann auf der gleichen Ebene wie dein Monster) und dann hängst du dieses Skript hier an deine Kamera:

using UnityEngine;
using System.Collections;

public class CompleteCameraController : MonoBehaviour {

    public GameObject player;       //Public variable to store a reference to the player game object


    private Vector3 offset;         //Private variable to store the offset distance between the player and camera

    // Use this for initialization
    void Start () 
    {
        //Calculate and store the offset value by getting the distance between the player's position and camera's position.
        offset = transform.position - player.transform.position;
    }
    
    // LateUpdate is called after Update each frame
    void LateUpdate () 
    {
        // Set the position of the camera's transform to be the same as the player's, but offset by the calculated offset distance.
        transform.position = player.transform.position + offset;
    }
}

Dem Slot "player" weißt du dein Monster zu. Jetzt schiebst du die Kamera in deiner Szene noch an die Position die sie auch später in Relation zu deinem Monster halten soll. Der Abstand der Kamera zu deinem Monster wird so festgelegt. Jetzt folgt die Kamera deinem Monster und wenn sich dein Monster drehen sollte, dreht sich die Kamera nicht mit!

Hier noch das Tutorial wo es kurz erklärt wird:
https://unity3d.com/de/learn/tutorials/projects/2d-ufo-tutorial/following-player-camera

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann hier noch eine andere Version. Hier bleibt die Kamera entweder in Position oder dreht sich mit der Achse des Spielers mit ("Rotate with Player").
Ein Problem ist, daß keine weicher Übergang zwischen beiden Kameraeinstellungen möglich ist (ohne hier extra eine Coroutine zu schreiben), aber vielleicht reicht es ja so (die Kamera richtet sich nun auch immer auf den Spieler aus):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CompleteCameraController : MonoBehaviour {

    public GameObject player;       //Public variable to store a reference to the player game object
    public bool rotateWithPlayer  = false;

    private Vector3 offset;         //Private variable to store the offset distance between the player and camera
    private Vector3 offset2;        

    // Use this for initialization
    void Start()
    {
        //Calculate and store the offset value by getting the distance between the player's position and camera's position.
        offset = transform.position - player.transform.position;
        offset2 = transform.position - (player.transform.position + player.transform.forward * offset.z);
    }

    // LateUpdate is called after Update each frame
    void LateUpdate()
    {
        // Set the position of the camera's transform to be the same as the player's, but offset by the calculated offset distance.
        if (rotateWithPlayer)
        {
            transform.position = player.transform.position + player.transform.forward * offset.z + offset2;
            transform.LookAt(player.transform);
        }
        else
        {
            transform.position = player.transform.position + offset;
            transform.LookAt(player.transform);
        }
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...