Witam, zmagam się sporo już z problemem dotyczącym skryptu pozwalającego na rotację kamery dookoła gracza/obiektu. Udało mi się w końcu uzyskać pożądany efekt, jednak nie wiem jak zrobić, aby kamera podążała za graczem, kiedy ten idzie. Sprawa wydaje się bajecznie błaha, ponieważ można ustawić kamerę jako child obiektu gracza i po problemie. Jednakże używam animacji chodzenia i ona ,,skacze" mi kiedy gracz się porusza, ponieważ w pełni przypisuje sobie wartości z komponentu Transform u gracza. Mniejsza, ponieważ chcę zrobić to w skrypcie, tylko nie mam za bardzo pomysłu jak to zrobić. Mam nadzieję, że nie będzie problemów ze zrozumieniem. Poniżej daję kod wraz z tłumaczeniem każdej linijki, może komuś się przyda
using UnityEngine;
using System.Collections;
public class Camera_controller : MonoBehaviour
{
// Szybkość rotacji
public float Rotation_speed;
// Zmienna zawierająca wartość obecnej rotacji
public float Rotation_X;
// Zmienna typu Vector3 przechowująca pozycję która następnie jest dodawana do obecnej pozycji w celu ustawienia kamery.
public Vector3 Camera_offset;
// Zmienna typu Transform przechowująca pozycje, rotacje oraz skale obiektu gracza.
public Transform plr;
private void LateUpdate()
{
// Do zmiennej Rotation_X dodaję wartość którą zwraca Input.GetAxis("Mouse X"). Dodaję, gdyż muszę zapobiec ,,resetowaniu" parametrów. Dla przykładu gdybym dał ,,=" wartość byłaby taka sama.
Rotation_X += Input.GetAxis("Mouse X");
// Tworzę nową zmienną typu Vector3 i przypisuję do niej rotację wraz z wymnożonym offsetem. Mało opisu, gdyż nie rozumiem za bardzo sposobu działania Quaternion.AngleAxis.
Vector3 offset_x = Quaternion.AngleAxis(Rotation_X * Rotation_speed, Vector3.up) * Camera_offset;
// Następnie ustawiam nową pozycję kamery dodając pozycję gracza i offset, dzięki czemu kamera obraca się dookoła gracza.
transform.position = plr.position + offset_x;
// Edytuję komponent Transform kamery, aby ta patrzyła się cały czas na gracza
transform.LookAt(plr.position);
}
}