La prédiction de trajectoire permet au joueur d’affiner le lancement d’un projectile dans certains jeux.
Cet outil est indispensable dans des jeux de type : Billard, Casse-brique, Brick Ball Breaker, etc…
Dans cette vidéo nous allons utiliser les « Raycast » afin de dessiner la trajectoire d’un projectile en 2D, pour cela nous allons devoir calculer le nouveau vecteur de direction après l’impact à l’aide de Vector2.Reflect.
Utilisation de Vector2.Reflect
Vector2.Reflect Reflète un vecteur hors du plan défini par une normale.
Syntaxe :
Vector2.Reflect ( Vector2 inDirection, Vector2 inNormal)
InDirection : Vecteur de direction du projectile.InNormal : Vecteur perpendiculaire à l’objet impacté.Result : Nouveau Vecteur de Direction.
Code source
using System.Collections;
using System.Collections.Generic;
public class RayBounce : MonoBehaviour
public int TotalBounce = 3 ;
public float LineOffset = 0.01 f;
Vector2 direction = transform. up ;
Vector2 origin = ( Vector2 ) transform. position + LineOffset * direction;
for ( int i= 1 ; i < =TotalBounce; i++ )
hit = Physics2D. Raycast ( origin, direction ) ;
Debug. DrawLine ( origin, hit. point ) ;
direction = Vector2. Reflect ( direction. normalized , hit. normal ) ;
origin = hit. point + LineOffset * direction;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RayBounce : MonoBehaviour
{
RaycastHit2D hit;
public int TotalBounce = 3;
public float LineOffset = 0.01f;
void Update()
{
Vector2 direction = transform.up;
Vector2 origin = (Vector2)transform.position + LineOffset * direction;
for(int i=1; i<=TotalBounce; i++)
{
hit = Physics2D.Raycast(origin, direction);
Debug.DrawLine(origin, hit.point);
direction = Vector2.Reflect(direction.normalized, hit.normal);
origin = hit.point + LineOffset * direction;
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RayBounce : MonoBehaviour
{
RaycastHit2D hit;
public int TotalBounce = 3;
public float LineOffset = 0.01f;
void Update()
{
Vector2 direction = transform.up;
Vector2 origin = (Vector2)transform.position + LineOffset * direction;
for(int i=1; i<=TotalBounce; i++)
{
hit = Physics2D.Raycast(origin, direction);
Debug.DrawLine(origin, hit.point);
direction = Vector2.Reflect(direction.normalized, hit.normal);
origin = hit.point + LineOffset * direction;
}
}
}
Poster un Commentaire
Vous devez vous connecter pour publier un commentaire.