Buenas, resulta que me estoy volviendo loco con un problema al que no encuentro solución por más que lo intento. Tengo un Enemigo con un Script llamado EnemyHealth donde guarda la vida que tiene. El player tira un raycast desde su arma y si golpea a un enemigo, accede al script EnemyHealth y llama a una función para quitarle vida. El script FUNCIONA y es el siguiente:
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth> ();
if(enemyHealth != null)
{
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
}
Cuando disparo y les doy, les quito vida sin problemas. Mi problema viene cuando cojo ese mismo código y se lo pongo a una torreta en vez de al player, que el getcomponent me da null siempre. Con Debug.log he visto que el raycast de la torreta impacta correctamente sobre el enemigo pero no es capaz de acceder a su script, al contrario que el player.
A la desesperada he probado a hacer enemyHealth publica y arrastrar al enemigo manualmente a su casilla y con el player si me lo coge. Con la torreta en cambio, me deja soltarlo encima (no me sale el símbolo de prohibido) pero no lo acepta, en cuanto lo suelto desaparece.
Si alguno es capaz de ver qué es lo que falla tendrá mi gratitud eterna y mi primer hijo xD