Ошибка AI

Форум для всего, что связано с ИИ.

Ошибка AI

Сообщение Artyom4iK 23 апр 2015, 21:36

Боты сначала двигаются в плоскости X и Z, а потом поднимаются в Y и начинают хаотично двигаться
Вот код, помогите пожалуйста решить проблемку
using UnityEngine;
using System.Collections;

public class AI : MonoBehaviour {
public bool isCycle = false;
public Vector3 [] _targetCyclePoints;
private int _targetIndex=0;

public float _range = 10f;
private float _minDist =5;
private Vector3 _spawnPoint;

public float _speed = 1f;
private float _lastTimeGo = -1f;
private float _timeForIdle = 2f;

private Vector3 _targetPoint;

void Start (){
if(!isCycle)
{
_spawnPoint = new Vector3(transform.position.x, transform.position.z);
}
}

void Update ()
{
if (_lastTimeGo <=Time.time)
{
Vector2 curpos = new Vector3(transform.position.x, transform.position.z);
Vector2 newpos = Vector3.zero;
if (isCycle)
{
_targetIndex++;
if (_targetIndex ==_targetCyclePoints.Length)
_targetIndex=0;
newpos = new Vector3(_targetCyclePoints[_targetIndex].x,_targetCyclePoints[_targetIndex].z);
}
else
{
while (true)
{
newpos = new Vector3(Random.Range(_spawnPoint.x - _range, _spawnPoint.x+_range), Random.Range(_spawnPoint.y - _range, _spawnPoint.y+_range));
if (Vector2.Distance(curpos,newpos) >=_minDist)
break;
}

}
_targetPoint=newpos;
_lastTimeGo =Time.time+Vector3.Distance(curpos, newpos)/ (_speed)+_timeForIdle;

transform.LookAt(new Vector3(_targetPoint.x, transform.position.y, _targetPoint.y));
}
if (_lastTimeGo -_timeForIdle > Time.time)
{
transform.Translate(0,GetComponent<Rigidbody>().velocity.y*Time.deltaTime, _speed * Time.deltaTime);
}
}
}
Artyom4iK
UNец
 
Сообщения: 5
Зарегистрирован: 11 апр 2015, 00:16

Вернуться в Искуственный Интеллект

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1