intro aim

This commit is contained in:
szczuras4
2025-07-18 05:12:05 +02:00
parent 4bf30e542a
commit ec467225b6
12 changed files with 9884 additions and 1012 deletions

View File

@@ -1,22 +1,59 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
// Ten nawias otwiera przestrzeń nazw 'Beyond'
namespace Beyond
{
[RequireComponent(typeof(Renderer))]
// Ten nawias otwiera klasę 'Billboard'
public class Billboard : MonoBehaviour
{
void Update()
{
if (Camera.main)
{
[Tooltip("Referencja do kamery, w stronę której obiekt ma patrzeć. Jeśli puste, automatycznie użyje Camera.main.")]
[SerializeField] private Camera _cameraToLookAt;
//Vector3 righ = Vector3.Cross(Camera.main.transform.forward, Vector3.up);
//transform.rotation = Quaternion.Euler(new Vector3(0f, Camera.main.transform.eulerAngles.y, 0f));
transform.rotation = Quaternion.LookRotation(-Camera.main.transform.forward, Vector3.up);
[Tooltip("Jak szybko obiekt ma się obracać w stronę kamery. Ustaw na dużą wartość (np. 1000) dla natychmiastowego obrotu.")]
[SerializeField] private float _rotationSpeed = 20f;
[Tooltip("Czy zablokować rotację na osi X, aby obiekt obracał się tylko w poziomie? Przydatne dla sprajtów 2D w świecie 3D.")]
[SerializeField] private bool _lockXAxis = false;
void Awake()
{
// Jeśli w Inspektorze nie przypisano żadnej kamery, spróbuj znaleźć główną kamerę przy starcie.
if (_cameraToLookAt == null)
{
_cameraToLookAt = Camera.main;
}
}
}
}
// Używamy LateUpdate(), aby mieć pewność, że wykonujemy obrót PO tym,
// jak kamera zaktualizowała swoją pozycję i rotację w danej klatce.
void LateUpdate()
{
if (_cameraToLookAt == null)
{
// Jeśli nadal nie ma kamery (np. główna została wyłączona), nie rób nic.
return;
}
// Oblicz docelową rotację
Quaternion targetRotation;
if (_lockXAxis)
{
// Wersja z zablokowaną osią X (obraca się tylko w lewo/prawo)
Vector3 cameraPosition = _cameraToLookAt.transform.position;
cameraPosition.y = transform.position.y;
targetRotation = Quaternion.LookRotation(transform.position - cameraPosition, Vector3.up);
}
else
{
// Wersja pełna (klasyczny billboard)
targetRotation = _cameraToLookAt.transform.rotation;
}
// Płynnie interpoluj (Slerp) od aktualnej rotacji do docelowej.
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, _rotationSpeed * Time.deltaTime);
}
} // <-- TEN ZNAK ZAMYKA KLASĘ 'Billboard'
} // <-- TEN ZNAK ZAMYKA PRZESTRZEŃ NAZW 'Beyond'