هوش دشمن (Enemy AI) در یونیتی
دوشنبه, ۲۵ اسفند ۱۳۹۳، ۰۶:۲۸ ق.ظ
زبان کد : سیشارپ
این کد برای بررسی فاصله ی دشمن تا player بکار می ره و سپس با تابع slerp حرکت آرام چرخش و رو کردن به سمت player و حرکت به سمتش:
(البته با تنظیم متغیرها می تونید انیمیشن دویدن رو توسط کامپوننت animator اجرا کنید و بعد از رسیدن به هدفبه حالت idle سوئیچ کنید.)
using UnityEngine;
using System.Collections;
public class EnemyAI : MonoBehaviour {
public Transform target;
public int moveSpeed;
public int rotationSpeed;
public int maxdistance;
private Transform myTransform;
void Awake(){
myTransform = transform;
}
void Start () {
GameObject go = GameObject.FindGameObjectWithTag("Player");
target = go.transform;
maxdistance = 2;
}
void Update () {
Debug.DrawLine(target.position, myTransform.position, Color.red);
myTransform.Rotation = Quaternion.Slerp(myTransform.Rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime);
if(Vector3.Distance(target.position, myTransform.position) > maxdistance){
//Move towards target
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
}
}
۹۳/۱۲/۲۵