using UnityEngine; using System.Collections; public class Wander : Face { public float offset; public float radius; public float rate; public override void Awake() { target = new GameObject(); target.transform.position = transform.position; base.Awake(); } public override Steering GetSteering() { Steering steering = new Steering(); float wanderOrientation = Random.Range(-1.0f, 1.0f) * rate; float targetOrientation = wanderOrientation + agent.orientation; // Вычисляем позицию цели для поворота Vector3 orientationVec = GetOriAsVec(agent.orientation); Vector3 targetPosition = (offset * orientationVec) + transform.position; targetPosition = targetPosition + (GetOriAsVec(targetOrientation) * radius); // Передаем позицию цели в Face для расчета поворота targetAux.transform.position = targetPosition; // Получаем только поворот от Face steering = base.GetSteering(); // Добавляем постоянное движение вперед steering.linear = agent.maxAccel * GetOriAsVec(agent.orientation); return steering; } public Vector3 GetOriAsVec(float orientation) { Vector3 vector = Vector3.zero; vector.x = Mathf.Sin(orientation * Mathf.Deg2Rad) * 1.0f; vector.z = Mathf.Cos(orientation * Mathf.Deg2Rad) * 1.0f; return vector.normalized; } }