AI Tấn công Tầm xa (Ranged Attack)
C# Code
using UnityEngine;
public class AIRangedAttack : MonoBehaviour
{
public Transform playerTransform;
public GameObject projectilePrefab;
public Transform firePoint;
public float attackRange = 15f;
public float fireRate = 1f; // Số lần bắn mỗi giây
private float nextFireTime = 0f;
void Update()
{
if (playerTransform == null) return;
float distanceToPlayer = Vector3.Distance(transform.position, playerTransform.position);
if (distanceToPlayer <= attackRange)
{
// Nhìn về phía người chơi
transform.LookAt(playerTransform.position);
// Kiểm tra nếu đã đến lúc bắn
if (Time.time >= nextFireTime)
{
Shoot();
nextFireTime = Time.time + 1f / fireRate;
}
}
}
void Shoot()
{
if (projectilePrefab != null && firePoint != null)
{
Instantiate(projectilePrefab, firePoint.position, firePoint.rotation);
}
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, attackRange);
}
}AI sẽ bắn đạn về phía người chơi khi họ ở trong tầm tấn công và có một khoảng thời gian chờ (cooldown) giữa mỗi lần bắn.