// Update is called once per frame void Update() { Vector2 accel = evade.getSteering(target); steeringBasics.steer(accel); steeringBasics.lookWhereYoureGoing(); }
public Vector3 getSteering(MovementAIRigidbody target, ICollection <MovementAIRigidbody> obstacles, out Vector3 bestHidingSpot) { //Find the closest hiding spot float distToClostest = Mathf.Infinity; bestHidingSpot = Vector3.zero; foreach (MovementAIRigidbody r in obstacles) { Vector3 hidingSpot = getHidingPosition(r, target); float dist = Vector3.Distance(hidingSpot, transform.position); if (dist < distToClostest) { distToClostest = dist; bestHidingSpot = hidingSpot; } } //If no hiding spot is found then just evade the enemy if (distToClostest == Mathf.Infinity) { return(evade.getSteering(target)); } //Debug.DrawLine(transform.position, bestHidingSpot); return(steeringBasics.arrive(bestHidingSpot)); }
protected override void Update() { steeringUpdate = new SteeringOutput(); steeringUpdate.linear = myMoveType.getSteering().linear; steeringUpdate.angular = myRotateType.getSteering().angular; base.Update(); }
// Update is called once per frame protected override void Update() { steeringUpdate = new SteeringOutput(); if (seeking) { steeringUpdate.linear = moveTypeSeek.getSteering().linear; } else if (fleeing) { steeringUpdate.linear = moveTypeFlee.getSteering().linear; } else if (evading) { steeringUpdate.linear = moveTypeEvade.getSteering().linear; } else { steeringUpdate.linear = moveTypeAvoid.getSteering().linear; } steeringUpdate.angular = facing ? rotateTypeFace.getSteering().angular : rotateTypeLWYG.getSteering().angular; base.Update(); }
// Update is called once per frame void FixedUpdate() { Vector3 movement = evade.getSteering(policeRigidBody); rb.MovePosition(/*transform.position + */ movement); }