public Face(Kinematic agentKinematic, Vector3 targetPosition, float timeToTarget = 0.25f, float satisfactionRadius = 5) : this(agentKinematic, new Kinematic { Position = targetPosition }, timeToTarget, satisfactionRadius) { }
public Arrive(Kinematic agentKinematic, Kinematic targetKinematic, float timeToTarget, float brakingRadius, float satisfactionRadius) : base(agentKinematic, targetKinematic) { _timeToTarget = timeToTarget; _brakingRadius = brakingRadius; SatisfactionRadius = satisfactionRadius; }
public Wander(Kinematic agentKinematic) : this(agentKinematic, new Seek(agentKinematic, new Kinematic()), new Face(agentKinematic, new Kinematic()), 100.0f, 2.0f, 1) { }
public override Steering Steer() { var steering = new Steering { Type = Steering.Types.Velocities }; if (WanderCircleRadius <= 0) { return(steering); } _headingAngle += MaximumSlideDegrees - 2 * Random.value * MaximumSlideDegrees; _headingAngle = Math.WrapAngle(_headingAngle); var forwardDirection = new Vector3(AgentKinematic.Velocity.x, 0, AgentKinematic.Velocity.z); if (forwardDirection.magnitude > 0) { forwardDirection.Normalize(); } else { forwardDirection = new Vector3(-Mathf.Sin(AgentKinematic.AngularVelocity.y), 0, -Mathf.Cos(AgentKinematic.AngularVelocity.y)); forwardDirection.Normalize(); } var rightDirection = new Vector3(-forwardDirection.z, 0, forwardDirection.x); forwardDirection *= WanderCircleOffset; rightDirection *= -Mathf.Sin(_headingAngle) * WanderCircleRadius; var direction = forwardDirection + rightDirection; direction.Normalize(); var targetKinematic = new Kinematic { Position = AgentKinematic.Position + direction * AgentKinematic.MaximumSpeed }; if (Move != null) { Move.OtherKinematic = targetKinematic; steering.Linear = Move.Steer().Linear; } if (Look == null) { return(steering); } Look.OtherKinematic = targetKinematic; steering.Angular = Look.Steer().Angular; return(steering); }
public Wander( Kinematic agentKinematic, SteeringBehaviour move, SteeringBehaviour look, float wanderCircleOffset, float wanderCircleRadius, float maximumSlideDegrees) : base(agentKinematic) { Move = move; Look = look; WanderCircleOffset = wanderCircleOffset; WanderCircleRadius = wanderCircleRadius; MaximumSlideDegrees = maximumSlideDegrees; }
public Kinematic(Kinematic kinematicSource) { MaximumSpeed = kinematicSource.MaximumSpeed; MaximumAngularSpeed = kinematicSource.MaximumAngularSpeed; MaximumAcceleration = kinematicSource.MaximumAcceleration; MaximumAngularAcceleration = kinematicSource.MaximumAngularAcceleration; Position = kinematicSource.Position; _rotation = kinematicSource._rotation; _velocity = kinematicSource._velocity; _angularVelocity = kinematicSource._angularVelocity; _acceleration = kinematicSource._acceleration; _angularAcceleration = kinematicSource._angularAcceleration; _accumulatedVelocity = kinematicSource._accumulatedVelocity; _accumulatedAngularVelocity = kinematicSource._accumulatedAngularVelocity; _accumulatedAcceleration = kinematicSource._accumulatedAcceleration; _accumulatedAngularAcceleration = kinematicSource._accumulatedAngularAcceleration; }
public Seek(Kinematic agentKinematic) : base(agentKinematic, new Kinematic()) { }
public Seek(Kinematic agentKinematic, Kinematic targetKinematic) : base(agentKinematic, targetKinematic) { }
public Seek(Kinematic agentKinematic, Vector3 targetPosition) : base(agentKinematic, targetPosition) { }
protected SteeringBehaviour(Kinematic agentKinematic, Kinematic otherKinematic = null) { AgentKinematic = agentKinematic; OtherKinematic = otherKinematic; }
public Flee(Kinematic agentKinematic) : base(agentKinematic) { }
public Flee(Kinematic agentKinematic, Kinematic targetKinematic) : base(agentKinematic, targetKinematic) { }
public Evade(Kinematic agentKinematic) : base(agentKinematic) { }
public Evade(Kinematic agentKinematic, Kinematic targetKinematic) : base(agentKinematic, targetKinematic) { }
public Align(Kinematic agentKinematic, Kinematic targetKinematic, float timeToTarget, float satisfactionRadius) : base(agentKinematic, targetKinematic) { _timeToTarget = timeToTarget; _satisfactionRadius = satisfactionRadius; }
protected SteeringBehaviour(Kinematic agentKinematic, Vector3 otherPosition) : this(agentKinematic, new Kinematic { Position = otherPosition }) { }
public Face(Kinematic agentKinematic, Kinematic targetKinematic, float timeToTarget = 0.25f, float satisfactionRadius = 5) : base(agentKinematic, targetKinematic, timeToTarget, satisfactionRadius) { }