// Update is called once per frame void Update() { if (target != null) { BaseBehavior targetBaseBehavior = target.transform.gameObject.GetComponent <BaseBehavior>(); if (targetBaseBehavior.live) { transform.LookAt(target.transform.position); float step = speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, target.transform.position, step); float dist = Vector3.Distance(gameObject.transform.position, target.transform.position); if (dist <= distanceToDamage) { targetBaseBehavior.TakeDamage(damage, sender); Destroy(gameObject); } } else { Destroy(gameObject); } } }