Page 1 sur 1

Unity3D problème de collision

Posté : lun. 25 août 2014 18:49
par Apomalyn
Bien le bonjour,
Tous d'abord merci d'être en train de lire ces lignes. Entrons dans le vif du sujet, je suis en train de réaliser un FPS  multijoueur sur le logiciel Unity3D (4.5.3) et je viens d'attaquer la partie la plus importante de tout FPS : les impacts et les dégats.
Afin de définir le point d'impact j'utilise ceci:
var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 var hit : RaycastHit;Mais pour une raison que j'ignore totalement lorsque je tir, j'obtiens une erreur que voici :
Spoiler: 
NullReferenceException: Object reference not set to an instance of an object
TirMagnum+$tirer$1+$.MoveNext () (at Assets/scripts/TirMagnum.js:33)
UnityEngine.MonoBehaviour:StartCoroutine_Auto(IEnumerator)
TirMagnum:Update() (at Assets/scripts/TirMagnum.js:20)

Alors si quelqu'un a une solution ou même un semblant de piste je vous serais extrêmement reconnaissant (oui je suis déprimé a ce niveau )

Ci-dessous je vous met toute la fonction, si vous avez besoin de plus n'hésitez pas.
Spoiler: 

function tirer(){
 peutTirer = false;
 networkView.RPC("SyncSon", RPCMode.All);
 SendMessageUpwards("Anime", 1);
 ballesChargeur --;
 
 var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 var hit : RaycastHit;
 
 if(Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), hit)){
 if(hit.collider == true){
 var objet = Instantiate(etincelles, hit.point, Quaternion.identity);
 objet.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
 Network.Instantiate(etincelles, objet.transform.position, objet.transform.rotation, 0);
 Destroy(objet.gameObject);
 Instantiate(impact, hit.point, Quaternion.identity);
 hit.collider.SendMessage("Degats", degats, SendMessageOptions.DontRequireReceiver);
 }
 }
Merci d'avance, Apomalyn

Re: Unity3D problème de collision

Posté : lun. 25 août 2014 18:53
par Apomalyn
Pardon j'ai oublié de vous mettre deux variables --'
Spoiler: 
var etincelles : gameObject;
var impact : gameObject;

function tirer(){
   peutTirer = false;
   networkView.RPC("SyncSon", RPCMode.All);
   SendMessageUpwards("Anime", 1);
   ballesChargeur --;
   
   var ray : Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   var hit : RaycastHit;
   
   if(Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), hit)){
         if(hit.collider == true){
            var objet = Instantiate(etincelles, hit.point, Quaternion.identity);
            objet.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
            Network.Instantiate(etincelles, objet.transform.position, objet.transform.rotation, 0);
            Destroy(objet.gameObject);
            Instantiate(impact, hit.point, Quaternion.identity);
            hit.collider.SendMessage("Degats", degats, SendMessageOptions.DontRequireReceiver);
      }
   }