public void Shoot() { cosestTarget = FindClosestTarget(); if (cosestTarget != null && Vector3.Distance(cosestTarget.transform.position, transform.position) <= range) { animator.SetTrigger("Attack"); transform.LookAt(cosestTarget.transform.position, Vector3.up); } }
private void OnTriggerEnter(Collider other) { AvatarWeaponTarget avatarWeaponTarget = other.GetComponent <AvatarWeaponTarget>(); if (avatarWeaponTarget != null) { avatarWeaponTarget.ReceiveImpact(this); } Destroy(gameObject); }
AvatarWeaponTarget FindClosestTarget() { AvatarWeaponTarget closestTarget = null; float closestTargetSqrDist = -1f; foreach (var t in AvatarWeaponTarget.availableTargets) { if (closestTarget == null || Vector3.SqrMagnitude(transform.position - t.transform.position) < closestTargetSqrDist) { closestTargetSqrDist = Vector3.SqrMagnitude(transform.position - t.transform.position); closestTarget = t; } } return(closestTarget); }
//llamado desde animacion public void SpawnBullet() { if (cosestTarget == null) { return; } AvatarBullet newBullet = Instantiate <AvatarBullet>(bulletPrefab); newBullet.transform.position = (bulletOrigin != null) ? bulletOrigin.position : transform.position; Vector3 targetPos = new Vector3( cosestTarget.transform.position.x, newBullet.transform.position.y, cosestTarget.transform.position.z); newBullet.transform.LookAt(targetPos, Vector3.up); Debug.DrawLine(transform.position, cosestTarget.transform.position, Color.red, 0.1f); cosestTarget = null; }