ID3/Assets/Wander.cs
2026-03-19 02:02:28 +03:00

41 lines
1.3 KiB
C#

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);
targetAux.transform.position = targetPosition;
steering = base.GetSteering();
steering.linear = targetAux.transform.position - transform.position;
steering.linear.Normalize();
steering.linear *= agent.maxAccel;
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;
}
}