2017-09-06 3 views
-1

Mon Raycast fonctionne et frappe mon ennemi.Essayer d'obtenir le script d'une autre classe dans l'unité avec javascript

Mais si je le frappe, je veux changer la variable de santé dans l'autre script de l'objet Object (Enemy Controller) en appelant la fonction TakeDamage(damage).

Malheureusement, je reçois cette erreur:

"Assets/Weapons/FPS Weapons/Scripts/Gun_Controller.js(692,35): BCE0018: The name 'EnemyController' does not denote a valid type ('not found'). Did you mean 'System.ComponentModel.EnumConverter'?"

Voici mon code:

if (hit.transform.tag == "warzombie_01") { 

    // Impact Particle for Enemy - warzombie_01 
    var impactHitBlood: GameObject = Instantiate(impactEffectBlood, hit.point, Quaternion.LookRotation(hit.normal)); 

    Destroy(impactHitBlood, 0.5 f); 

    //var enemyController : EnemyController = hit.transform.gameObject.GetComponent.<EnemyController>(); 

    var enemyController: EnemyController = hit.transform.GetComponent(EnemyController); 

    if (enemyController != null) { 

     enemyController.TakeDamage(damage); 
    } 

} 

Merci!

+0

Etes-vous sûr que c'est JavaScript? Ou est-ce que Unity applique des types dans JS? - Ah. Vous pouvez ajouter la balise 'UnityScript'. – evolutionxbox

+0

C'est toujours une sorte de Javascript mais la balise UnityScript est mieux utilisée pour cela. – Programmer

+0

@ 1zz0, Ce problème se produit uniquement avec UnityScript. Pensez à passer en C#. Une autre raison de passer en C# est que UnityScript est maintenant [interrompu] (https://stackoverflow.com/questions/45523239/is-unityscript-javascript-discontinued). Son compilateur sera retiré de Unity à l'avenir. Épargnez-vous le temps maintenant. – Programmer

Répondre

0

Ok, j'ai découvert le problème. Mon "Enemy Controller" devrait être dans le dossier suivant: Actifs> Actifs standard.

+0

Souhaitez-vous clôturer la question ou attendre et marquer ceci comme réponse? (De toute façon, vous n'obtiendrez pas un représentant) – evolutionxbox