# Unity ile AI Destekli Oyun Geliştirme
Unity'de AI entegrasyonu oyun deneyimini bambaşka bir seviyeye taşıyor. Bu yazıda, Unity'de AI destekli NPC'ler ve akıllı oyun mekaniği nasıl geliştirileceğini öğreneceksiniz.
## Unity AI Araçları
### 1. Unity ML-Agents
- Machine learning tabanlı AI
- Reinforcement learning desteği
- Python entegrasyonu
### 2. Unity NavMesh
- Pathfinding algoritmaları
- Dynamic obstacle avoidance
- Multi-agent navigation
### 3. Behavior Trees
- Visual scripting
- Complex AI behaviors
- State management
## AI Destekli NPC Geliştirme
### 1. Temel AI Controller
csharp
using UnityEngine;
using UnityEngine.AI;
public class AIController : MonoBehaviour
{
private NavMeshAgent agent;
private Transform player;
private Animator animator;
[Header("AI Settings")]
public float detectionRange = 10f;
public float attackRange = 2f;
public float patrolSpeed = 2f;
public float chaseSpeed = 5f;
private AIState currentState;
public enum AIState
{
Patrol,
Chase,
Attack,
Idle
}
void Start()
{
agent = GetComponent();
animator = GetComponent();
player = GameObject.FindWithTag("Player").transform;
currentState = AIState.Patrol;
}
void Update()
{
switch (currentState)
{
case AIState.Patrol:
PatrolBehavior();
break;
case AIState.Chase:
ChaseBehavior();
break;
case AIState.Attack:
AttackBehavior();
break;
}
}
void PatrolBehavior()
{
// Patrol logic
if (Vector3.Distance(transform.position, player.position) < detectionRange)
{
currentState = AIState.Chase;
}
}
void ChaseBehavior()
{
agent.SetDestination(player.position);
agent.speed = chaseSpeed;
if (Vector3.Distance(transform.position, player.position) < attackRange)
{
currentState = AIState.Attack;
}
}
void AttackBehavior()
{
// Attack logic
if (Vector3.Distance(transform.position, player.position) > attackRange)
{
currentState = AIState.Chase;
}
}
}
### 2. Machine Learning Entegrasyonu
csharp
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;
public class MLAgent : Agent
{
[Header("ML Settings")]
public float moveSpeed = 5f;
public float rotationSpeed = 100f;
private Rigidbody rb;
private Transform target;
public override void Initialize()
{
rb = GetComponent();
target = GameObject.FindWithTag("Target").transform;
}
public override void OnEpisodeBegin()
{
// Reset agent position
transform.localPosition = new Vector3(0, 0.5f, 0);
rb.velocity = Vector3.zero;
}
public override void CollectObservations(VectorSensor sensor)
{
// Add observations
sensor.AddObservation(transform.localPosition);
sensor.AddObservation(target.localPosition);
sensor.AddObservation(rb.velocity);
}
public override void OnActionReceived(ActionBuffers actions)
{
// Process actions
float moveX = actions.ContinuousActions[0];
float moveZ = actions.ContinuousActions[1];
Vector3 movement = new Vector3(moveX, 0, moveZ) * moveSpeed;
rb.AddForce(movement);
// Reward system
float distanceToTarget = Vector3.Distance(transform.localPosition, target.localPosition);
if (distanceToTarget < 1.5f)
{
SetReward(1.0f);
EndEpisode();
}
else
{
SetReward(-0.01f);
}
}
}
## Gelişmiş AI Teknikleri
### 1. Behavior Trees ile Kompleks AI
- Visual scripting
- State transitions
- Conditional behaviors
### 2. Neural Networks
- Custom AI models
- Training data collection
- Model optimization
### 3. Multi-Agent Systems
- Swarm intelligence
- Collaborative behaviors
- Emergent gameplay
## Performance Optimizasyonu
### 1. AI Culling
- Distance-based activation
- LOD systems
- Batch processing
### 2. Memory Management
- Object pooling
- Garbage collection optimization
- Efficient data structures
## Sonuç
Unity'de AI geliştirme, oyun deneyimini zenginleştiren güçlü bir araçtır. Bu teknikleri kullanarak akıllı ve etkileşimli NPC'ler oluşturabilirsiniz.