public SteeringOutput Wander() { DynamicAlign a = new DynamicAlign(agent.k, target.k, maxAngularAcceleration, maxRotation, targetRadiusA, slowRadiusA); DynamicFace f = new DynamicFace(new Kinematic(), a); return(new DynamicWander(wanderOffset, wanderRadius, wanderRate, maxAcceleration, f).getSteering()); }
public DynamicWander(float _wanderOffset, float _wanderRadius, float _wanderRate, float _maxAcceleration, DynamicFace _f) { wanderOffset = _wanderOffset; wanderRadius = _wanderRadius; wanderRate = _wanderRate; maxAcceleration = _maxAcceleration; f = _f; //wanderOrientation = f.a.character.orientation; }
IEnumerator AnimateFaceCO(DynamicFace dynamicFace) { float t = 0f; var startScale = dynamicFace.transform.localScale; float period = 0.25f; float maxScale = 0.2f; while (t < 1f) { t += Time.deltaTime / period; var pingpong = Mathf.PingPong(t, 0.5f); dynamicFace.transform.localScale = startScale + Vector3.one * pingpong * maxScale; yield return(null); } }
public SteeringOutput Wander() { if (startTime > wanderRate) { wanderOrientation += randomBinomial() * wanderRate; startTime = 0f; } startTime += Time.deltaTime; DynamicAlign a = new DynamicAlign(agent.k, new Kinematic(), maxAngularAcceleration, maxRotation, targetRadiusA, slowRadiusA); DynamicFace f = new DynamicFace(new Kinematic(), a); DynamicSeek ds = new DynamicSeek(agent.k, new Kinematic(), maxAcceleration); DynamicWander dw = new DynamicWander(wanderOffset, wanderRadius, wanderRate, maxAcceleration, wanderOrientation, ds); SteeringOutput so = dw.getSteering(); agent.DrawCircle(dw.targetPos, wanderRadius); //agent.DrawLine(agent.k.position, asVector(wanderOrientation)); return(so); }