Je viens vers vous car j'ai un petit soucis.
J'ai écrit un script pour des tourelles de défense. La tourelle tourne et se verrouille sur l'ennemi.
Mon problème est le suivant, j'ai plusieurs factions, chaque faction aillant son tag.
Du coup je souhaiterais pouvoir mettre plusieurs tags que la tourelle doit verrouiller.
J'ai testé quelques trucs mais rien ne se produit ...
Ci joint mon script :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class Tower : MonoBehaviour {
private Transform target;
public float range = 15f;
public string enemyTag = "Enemy";
public Transform partToRotate;
void Start()
{
InvokeRepeating("UpdateTarget", 0f, 0.5f);
}
void UpdateTarget ()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);
float shortestDistance = Mathf.Infinity;
GameObject nearestEnemy = null;
foreach (GameObject enemy in enemies)
{
float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
if (distanceToEnemy < shortestDistance)
{
shortestDistance = distanceToEnemy;
nearestEnemy = enemy;
}
}
if (nearestEnemy != null && shortestDistance <= range)
{
target = nearestEnemy.transform;
} else
{
target = null;
}
}
void Update() {
if (target == null)
return;
Vector3 dir = target.position - transform.position;
Quaternion lookRotation = Quaternion.LookRotation(dir);
Vector3 rotation = lookRotation.eulerAngles;
partToRotate.rotation = Quaternion.Euler (0f, rotation.y, 0f);
}
void OnDrawGizmosSelectited ()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, range);
}
}
meTonne