public override void OnInspectorGUI() { DrawDefaultInspector(); SteeringBehaviors SB = (SteeringBehaviors)target; // Draw checkbox for the FleeBehavior bool SB.IsFleeBehaviorEnabled = EditorGUILayout.Toggle("IsFleeBehaviorEnabled", SB.IsFleeBehaviorEnabled); if (SB.IsFleeBehaviorEnabled) { SB.FleeTarget = EditorGUILayout.ObjectField("Target", SB.FleeTarget, typeof(GameObject), true) as GameObject; } // Draw checkbox for the SeekBehavior bool SB.IsSeekBehaviorEnabled = EditorGUILayout.Toggle("IsSeekBehaviorEnabled", SB.IsSeekBehaviorEnabled); if (SB.IsSeekBehaviorEnabled) { SB.SeekTarget = EditorGUILayout.ObjectField("Target", SB.SeekTarget, typeof(GameObject), true) as GameObject; } // Draw checkbox for the WanderBehavior bool SB.IsWanderBehaviorEnabled = EditorGUILayout.Toggle("IsWanderBehaviorEnabled", SB.IsWanderBehaviorEnabled); if (SB.IsWanderBehaviorEnabled) { SB.AreaBoundaries = EditorGUILayout.ObjectField("WanderingBoundaries", SB.AreaBoundaries, typeof(GameObject), true) as GameObject; } }
public override Vector2 CalculateSteering(MovingEntity vehicle) { Vector2 steeringForce = new Vector2(); if (seek) { steeringForce += SteeringBehaviors.Seek(vehicle); } if (flee) { steeringForce += SteeringBehaviors.Flee(vehicle); } if (arrive) { steeringForce += SteeringBehaviors.Arrive(vehicle, SteeringBehaviors.Deceleration.normal); } if (separation) { steeringForce += SteeringBehaviors.Separation(vehicle) * 3; } if (pursuit) { steeringForce += SteeringBehaviors.Pursuit(vehicle); } return(steeringForce); }
// MonoBehaviour // void Awake() { velocity = Vector3.right; //MaxSpeed = 2.0f; mSteering = new SteeringBehaviors(this); //mSteering.SetFlag(Behavior.separation); }
Vector3 PathFollowing(SimplePath path) { Vector3 predictedLocation = cachedTransform.position + velocity.normalized * predictionDistance;// maxSpeed; predictedLocationMarker.position = predictedLocation; float shortestSqrMagnitude = Mathf.Infinity; int startIndexOfClosestLine = -1; Vector3 closestNormalPoint = Vector3.zero; // Find the closest normal point by checking against all lines in path. for (int i = 0; i < path.points.Count - 1; i++) { Vector3 normalPoint = ComputeClampedNormalPoint(predictedLocation, path.points[i], path.points[i + 1]); float sqrMagnitudeAB = (path.points[i + 1] - path.points[i]).sqrMagnitude; // The normal cannot be between A & B if its distance to A or B exceeds the length of AB. if (sqrMagnitudeAB < (normalPoint - path.points[i]).sqrMagnitude) { normalPoint = path.points[i + 1]; } else if (sqrMagnitudeAB < (normalPoint - path.points[i + 1]).sqrMagnitude) { normalPoint = path.points[i]; } float sqrMagnitudeFromNormal = (predictedLocation - normalPoint).sqrMagnitude; if (sqrMagnitudeFromNormal < shortestSqrMagnitude) { shortestSqrMagnitude = sqrMagnitudeFromNormal; startIndexOfClosestLine = i; closestNormalPoint = normalPoint; } } // If no valid noraml could be found, redirect the boid to the start of the path. if (startIndexOfClosestLine == -1) { return(SteeringBehaviors.Seek(cachedTransform.position, velocity, maxSpeed, path.points[0])); } normalPointMarker.position = closestNormalPoint; Vector3 pathDirection = path.points[startIndexOfClosestLine + 1] - path.points[startIndexOfClosestLine]; Vector3 futurePathTarget = closestNormalPoint + pathDirection.normalized;// * predictionDistance; futurePathTargetMarker.position = futurePathTarget; if (shortestSqrMagnitude > path.radius * path.radius) { return(SteeringBehaviors.Seek(cachedTransform.position, velocity, maxSpeed, futurePathTarget)); } else // No steering required { return(Vector3.zero); } }
protected override void Init() { base.Init(); steer = new SteeringBehaviors(this); heading = this.transform.up; this.isUpdateOrientation = true; }
public MovingAgent(UnityGhost UNITYGHOST, SteeringBehaviors agentBehaviors, Vector2 HomeLocation) { this._unityGhost = UNITYGHOST; this._unityGhost.MaxSpeed = 2.0f; this._unityGhost.Mass = 5f; this._unityGhost.MaxForce = 0.5f; this._unityGhost.Direction = new Vector2(0, 0); this._homeLoc = HomeLocation; }
private void Start() { pSteering = new SteeringBehaviors(this.gameObject); // v_velocity = new Vector2(0f, 0f); mass = 1f; maxSpeed = 10f; _pos = transform.position; v_heading = transform.localEulerAngles; StartCoroutine(Updating()); }
void Start() { body = GetComponent <Rigidbody>(); body.useGravity = false; missileLauncher = GetComponentInChildren <MissileLauncher>(); steeringBehaviors = GetComponent <SteeringBehaviors>(); movement = GetComponent <Movement>(); sensor = GetComponent <Sensor>(); }
public MeteoroidAlienform(Ship owner, float lifetime) : base(owner, "Sprites/Meteoroid-Alienform.png", Color.Green, lifetime) { RotateToMomentum = true; Momentum = Vector2.One; MaxSpeed = 9f; _pursuit = new Pursuit(this); SteeringBehaviors.Add(_pursuit); }
// Use this for initialization void Start() { enemyAudioSource = GetComponent <AudioSource>(); //initializes the enemy's audio source this._agent = new MovingAgent(this, SteeringBehaviors.PathFollow, this._homeLoc); this.Location = this._homeLoc; enemyCollider = this.GetComponent <BoxCollider2D>(); //initalizes the collider FindRandomPath(); GrabNodes(); this._behaviors = SteeringBehaviors.PathFollow; }
void Start() { GenerateRandomAttributes(); GetBehaviorPriority(); steeringBasics = GetComponent <Steering>(); steering = GetComponent <SteeringBehaviors>(); //shoot = GetComponent<Shooting>(); sensor = transform.Find("Sensor").GetComponent <Sensor>(); vision = transform.Find("Vision").GetComponent <Vision>(); }
public FleeingFake(Ship owner, float lifetime) : base(owner, "Sprites/Fatboy-FleeingFake.png", Color.Yellow, lifetime) { RotateToMomentum = true; Momentum = Vector2.One; MaxSpeed = 10f; _flee = new Flee(this) { PanicDistance = 500f, }; SteeringBehaviors.Add(_flee); }
void Start() { velocity = Vector3.right; maxSpeed = 2.0f; mSteering = new SteeringBehaviors(this); //mSteering.SetPath(Path, Loop); //INTERNAL mSteering.SetFlag(Behavior.separation); mSteering.SetFlag(Behavior.alignment); mSteering.SetFlag(Behavior.cohesion); mSteering.SetFlag(Behavior.followPath); mSteering.SetFlag(Behavior.wander2d); }
public override Vector2 CalculateSteering(MovingEntity vehicle) { Vector2 steeringForce = Vector2.zero; Vector2 force; if (separation) { force = SteeringBehaviors.Separation(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force) && force != Vector2.zero) { return(steeringForce); } } if (seek) { force = SteeringBehaviors.Seek(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (flee) { force = SteeringBehaviors.Flee(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (arrive) { force = SteeringBehaviors.Arrive(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } if (pursuit) { force = SteeringBehaviors.Pursuit(vehicle) * 1.0f; if (AccumulateForce(vehicle, ref steeringForce, force)) { return(steeringForce); } } return(steeringForce); }
// Use this for initialization protected virtual void Start() { _transform = gameObject.GetComponent <Transform> (); _rigidbody = gameObject.GetComponent <Rigidbody2D> (); if (_rigidbody == null) { Debug.LogError("Missing rigidbody"); } _renderer = gameObject.GetComponent <SpriteRenderer> (); if (_renderer == null) { Debug.LogError("Missing renderer"); } steeringBehavior = new SteeringBehaviors(this); }
public PursuiterMissile(Ship owner, float lifetime) : base(owner, "Sprites/Avenger-PursuiterMissile.png", Color.Red, lifetime) { RotateToMomentum = true; Momentum = Vector2.One; MaxSpeed = 10f; _pursuit = new Pursuit(this); SteeringBehaviors.Add(_pursuit); // Wander, for when the target is not visible. _wander = new Wander(this) { Jitter = 1.25f, WanderDistance = 1f, WanderRadius = 100f, }; SteeringBehaviors.Add(_wander); }
public WandererProbe(Ship owner, float lifetime) : base(owner, "Sprites/Explorer-WandererProbe.png", Color.CornflowerBlue, lifetime) { RotateToMomentum = true; Momentum = Vector2.One; MaxSpeed = 12f; _wander = new Wander(this) { Jitter = 1.25f, WanderDistance = 1f, WanderRadius = 100f, }; _seek = new Seek(this) { Target = null }; SteeringBehaviors.Add(_seek); SteeringBehaviors.Add(_wander); }
// Use this for initialization void Start () { velocity = Vector3.right; //MaxSpeed = 2.0f; mSteering = new SteeringBehaviors(this); Vector2 target = Forest.GetGlobalInstance().AnyLocation;//NavMesh2D.GetInstance().GetRandomPos(); mSteering.SetTarget(target); mPath = AStar.GetInstance().FindPath(transform.position, target); mSteering.SetPath(mPath, false); smoke = Resources.Load("smoke") as GameObject; //INTERNAL //mSteering.SetFlag(Behavior.separation); //mSteering.SetFlag(Behavior.alignment); //mSteering.SetFlag(Behavior.cohesion); mSteering.SetFlag(Behavior.followPath); //mSteering.SetFlag(Behavior.wander2d); if (sfx == null) sfx = GameObject.Find("Audio/AudioSFX").GetComponent<AudioSource>(); }
private void FixedUpdate() { var steeringForce = new Vector2(); if (Target != null && settings.Seek > 0) { steeringForce = settings.Seek * SteeringBehaviors.Seek(this, Target.position); } foreach (var boid in allBoids) { if ((object)boid != this) { if ((boid.GetPosition() - GetPosition()).sqrMagnitude < 1f) { if (settings.Flee > 0) { steeringForce += settings.Flee * SteeringBehaviors.Flee(this, boid.GetPosition()) / ((Vector2)transform.position - boid.GetPosition()).magnitude; } if (settings.GetClose > 0) { steeringForce += settings.GetClose * SteeringBehaviors.Seek(this, boid.GetPosition()); } ; if (settings.Align > 0) { steeringForce += settings.Align * SteeringBehaviors.Aling(this, boid); } } } } _rigidbody.AddForce(Vector2.ClampMagnitude(steeringForce, _maxForce)); TurnTowardsVelocity(); }
private void Start() { Steering = new SteeringBehaviors(this); Collider = GetComponent <SphereCollider>(); }
public void UpdateSteering() { steeringVector = transform.forward; if (isSeeking && targetTransform != null) { steeringVector = SteeringBehaviors.Seek(cachedTransform.position, velocity, maxSpeed, targetTransform.position); } if (isFleeing && targetTransform != null) { steeringVector = SteeringBehaviors.Flee(cachedTransform.position, velocity, maxSpeed, targetTransform.position); } if (isPursuing && movingTarget != null) { steeringVector = SteeringBehaviors.Pursuit(cachedTransform.position, velocity, maxSpeed, movingTarget.transform.position, movingTarget.velocity); } if (isEvading && movingTarget != null) { steeringVector = SteeringBehaviors.Evasion(cachedTransform.position, velocity, maxSpeed, movingTarget.transform.position, movingTarget.velocity); } if (isArriving && targetTransform != null) { steeringVector = SteeringBehaviors.Arrival(cachedTransform.position, velocity, maxSpeed, targetTransform.position, arrivalSlowingDistance); } if (IsWandering) { steeringVector = Wander(0.5f, 0.1f, false); } if (isLeaderFollowing) { Vector3 leaderFollowPoint = leader.transform.position + leader.transform.forward * -2f; steeringVector = SteeringBehaviors.Arrival(cachedTransform.position, velocity, maxSpeed, leaderFollowPoint, arrivalSlowingDistance); } if (isPathFollowing) { Vector3 possibleSteeringVector = PathFollowing(simplePath); if (possibleSteeringVector != Vector3.zero) { steeringVector = possibleSteeringVector; } } if (isSeperating) { Vector3 repulsionLocation = cachedTransform.position + Seperation(); if (repulsionLocation != cachedTransform.position) { Vector3 desiredVelocity = (repulsionLocation - cachedTransform.position).normalized * maxSpeed; steeringVector = desiredVelocity - velocity; } } if (isAvoidingCollision) { Vector3 collisionSteeringVector = CollisionAvoidance(); if (collisionSteeringVector != velocity) { if (collisionSteeringVector == transform.forward * maxSpeed && steeringVector != transform.forward) { // The previously applied steering vector should not be modified. } else { steeringVector = collisionSteeringVector; } } } if (velocity != Vector3.zero) //Check is to prevent the log message "Look rotation viewing vector is zero" { transform.rotation = Quaternion.LookRotation(velocity); } UpdateMovement(); }
public void RemoveSteeringBehaviour(SteeringBehaviour type) { SteeringBehaviors.RemoveAll(SB => SB.GetType() == type.GetType()); }
public void RemoveAllMovingBehaviours() { movingBehaviours.ForEach(MB => { SteeringBehaviors.RemoveAll(SB => SB.GetType().Equals(MB.GetType())); }); }
private void UpdateAIBehavior(SteeringBehaviors steeringBehaviors) { this._behaviors = steeringBehaviors; }