=> un rayon est lancé du personnage vers la camera, si il n'arrive pas jusqu'à la camera alors j'ajuste la position au point d'impact.
au repos la camera retourne à sa position précédente (gérer dans une classe).
Ca fonctionne mais je me prend quelques fois des sursauts désagréables.
Autre limite, la camera est trop bien ajusté et donc la "face" en collision est non visible à l'écran -gênant pour le sol.
Je voulais connaître les principes/stratégies pour améliorer l'ordinaire au tour de cette problématique.
je peux lancer un rayon dans l'autre sens pour connaître l'épaisseur et savoir si la camera est derrière ou dans un volume. C'est une bonne idée à creuser? Tester des idées est chronophage quelques conseils ne font pas de mal. Il faut alterner les plaisirs
Le lancé d'un rayon est une opération couteuse??
https://www.youtube.com/watch?v=Nu7rc4lUsF0
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShowEveryTime : MonoBehaviour
{
public GameObject target;
public void LateUpdate()
{
var targetpos = target.transform.position;
targetpos.y += 4;
Ray ray = new Ray(targetpos, this.transform.position - targetpos);
var max = (targetpos - this.transform.position).magnitude;
RaycastHit hit;
if (Physics.Raycast(ray, out hit,max))
{
if(hit.distance < max)
{
this.transform.position = hit.point;
Debug.DrawLine(targetpos, hit.point, Color.red);
}
else
{
Debug.DrawLine(targetpos, hit.point, Color.gray);
}
}
transform.LookAt(target.transform);
}
}