@Zimaell

Как сделать эфект лазера?

У меня есть башня которая стреляет снарядами (игра типа TD), вот пример реализации
spoiler
public class TowerBullet : MonoBehaviour{
	public float FindRadius = 2f;
	public float TimeShot = 0.5f;
	Enemy enemy;
	Transform towerHead;
	private float timerShot = 0f;
	public GameObject bullet;
    
    void Start(){
		towerHead = transform.Find("Head");
    	}
	
    void Update(){
		if(enemy == null) FindEnemy();
			else{
				towerHead.LookAt(enemy.transform);
				shot();
				float dist = Vector3.Distance(enemy.transform.position, transform.position);
				if(dist > FindRadius) enemy = null;
				}
    	}
	
	public void shot(){
		timerShot -= Time.deltaTime;
		if(timerShot <= 0){
			timerShot = TimeShot;
			GameObject obj = (GameObject)Instantiate(bullet, towerHead.transform.position, towerHead.transform.rotation);
			Bullet b = obj.GetComponent<Bullet>();
			b.Enemy = enemy;
			}
		}
	
	public void FindEnemy(){
		GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy") as GameObject[];
		float min = FindRadius;
		Enemy minEnemy = null;
		foreach(GameObject e in enemies){
			float dist = Vector3.Distance(e.transform.position, transform.position);
			if(dist <= min){
				min = dist;
				minEnemy = e.GetComponent<Enemy>();
				}
			}
		enemy = minEnemy;
		}
	}

public class Bullet : MonoBehaviour{
	public float Speed = 15f;
	public float TimeLife = 0.1f;
	float timerLife = 0f;
	public Enemy Enemy;
	public float Damage = 25f;
	public float Accuracy = 90f;
	public float Critical = 2f;
	public float Chance_Critical = 20f;
    void Start(){
		timerLife = TimeLife;
		}
	
    void Update(){
		timerLife -= Time.deltaTime;
		float _speed = Speed * Time.deltaTime;
		if(timerLife <= 0){
			timerLife = TimeLife;
			Object.Destroy(gameObject);
			}else if(Enemy != null && Vector3.Distance(transform.position, Enemy.transform.position) <= _speed){
				Enemy.SetDamage(Damage);
				Object.Destroy(gameObject);
				return;
				}
		transform.Translate(new Vector3(0,0, _speed));
		}
	}

К башне прикрепляется TowerBullet, к самим пулям Bullet, работает все как нужно - башня выслеживает противника, пули в них вылетают и пропадают при попадании, при этом нанося нужный урон.

Как можно модифицировать скрипт чтобы эта башня стреляла лазером ?( луч который будет начинаться с башни до противника и растягиваться при удалении пока из радиуса не выйдет)
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
@4xy0
Попробуйте посмотрите здесь про луч ( как раз на примере TD )
Ответ написан
Griboks
@Griboks Куратор тега Unity
1. Создаёте модель луча
2. Растягиваете и поворачиваете ее
3. Повторяете п2 в update
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы