Dans mon jeu, le joueur utilise un analogue virtuel pour viser un objet spécifique, quand il libère l'analogue, le personnage doit se déplacer vers cet objet. Je veux stocker que la position de l'objet (plus comme la direction où le joueur doit se déplacer basée sur la position de l'objet) dans une variable mais seulement si elle était la dernière chose que le rayon est entré en collision avec:Store Raycast hit info
Vector3 targetPos;
RaycastHit hit;
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) {
Vector3 moveDir = (hit.point - transform.position).normalized;
targetPos = moveDir;
} else {
targetPos = Vector3.zero;
}
En faisant cette variable targetPos
retourne toujours à zéro après avoir libéré l'analogue même si le dernier objet entré en collision était cet objet spécifique.
Édition: Résolu basé sur le commentaire @MukeshSaini. Merci a tous.
Quelle est votre question? – Programmer
Votre code va-t-il jamais dans l'instruction 'if'? Vous pouvez confirmer en faisant un 'BreakPoint' et un débogage. – Hristo
@Programmer, OP ne veut pas que la valeur 'targetPos' devienne zéro après avoir libéré l'analogique. @ Abdou023, pouvez-vous s'il vous plaît partager plus de code, je pense que vous utilisez raycast même après que l'utilisateur a publié analogique qui pourrait renvoyer faux pour 'Physics.Raycast' et en plaçant' targetPos' à 'Vector3.zero' dans le bloc' else'. –