Witam
Robię grę trzecioosobową i mam problem z kolizją kamery, rozwiązanie częściowo znalazłem:
using UnityEngine;
using System.Collections;
public class kamera : MonoBehaviour
{
public float minDistance = 1.0f;
public float maxDistance = 4.0f;
public float smooth = 10.0f;
Vector3 dollyDir;
float distance;
void Awake()
{
dollyDir = transform.localPosition.normalized;
distance = transform.localPosition.magnitude;
}
void Update()
{
Vector3 desiredCameraPos = transform.parent.TransformPoint(dollyDir * maxDistance);
RaycastHit hit;
if (Physics.Linecast(transform.parent.position, desiredCameraPos, out hit))
{
distance = Mathf.Clamp(hit.distance, minDistance, maxDistance);
}
else
{
distance = maxDistance;
}
transform.localPosition = Vector3.Lerp(transform.localPosition, dollyDir * distance, Time.deltaTime * smooth);
}
}
ale:
1) nie umiem dodać podnoszenia i opadania kamery(przesuwanie myszki góra, dół)
2)W trakcie chodzenia postacią do tyłu kamera zaczyna wariować(przysuwa się i oddala)
Hierarchia:Player->kamera,reszta
Jeżeli ktoś ma jakiś pomysł jak to naprawić, albo zupełnie nowy kod, jestem otwarty na propozycje.