public override SteeringOutput GetSteering() { SteeringOutput result = KeepPosition.GetSteering(ownKS, target, requiredDistance, requiredAngle); base.applyRotationalPolicy(rotationalPolicy, result, target); return(result); }
public static SteeringOutput GetSteering(KinematicState ownKS, GameObject target, float distance, float angle, string tag, float repulsionTh, float wlr /* COMPLETE */) { // compute both steerings SteeringOutput lr = LinearRepulsion.GetSteering(ownKS, tag, repulsionTh); SteeringOutput kp = KeepPosition.GetSteering(ownKS, target, distance, angle); // blend // (if one is SteeringBehaviour.NULL_STEERING return the other. // if none is SteeringBehaviour.NULL_STEERING blend with weights wlr and 1-wlr) /* COMPLETE */ if (lr == SteeringBehaviour.NULL_STEERING) { return(kp); } if (kp == SteeringBehaviour.NULL_STEERING) { return(lr); } // "concoct" the blending on lr lr.linearAcceleration = wlr * lr.linearAcceleration + (1 - wlr) * kp.linearAcceleration; return(lr); }
public static SteeringOutput GetSteering(KinematicState ownKS, GameObject target, float distance = 10.0f, float angle = 180.0f, string tag = "REPULSIVE", float repulsionTh = 8.0f) { SteeringOutput so = LinearRepulsion.GetSteering(ownKS, tag, repulsionTh); // Give priority to linear repulsion // (if linear repulsion is not SteeringBehaviour.NULL_STEERING return linear repulsion if (so != NULL_STEERING) { return(so); } // else return Keep Position return(KeepPosition.GetSteering(ownKS, target, distance, angle)); }
public override SteeringOutput GetSteering() { if (this.ownKS == null) { this.ownKS = GetComponent <KinematicState>(); } if (this.target == null) { Debug.Log("Null target in Seek of " + this.gameObject); } SteeringOutput result = KeepPosition.GetSteering(base.ownKS, this.target, this.requiredDistance, this.requiredAngle); base.applyRotationalPolicy(rotationalPolicy, result, target); return(result); }
protected override SteeringOutput GetSteering() { SteeringOutput result; if (m_useArrive) { result = KeepPosition.GetSteering(m_ownKS, m_keepPositioninfo, m_arriveInfo); } else { result = KeepPosition.GetSteering(m_ownKS, m_keepPositioninfo); } base.ApplyFacingPolicy(m_keepPositioninfo.m_facingPolicy, result, m_alignInfo.m_target.gameObject); return(result); }
public static SteeringOutput GetSteering(KinematicState ownKs, string idTag, float cohesionThreshold, float repulsionThreshold, float wanderRate, float vmWeight, float rpWeight, float coWeight, float wdWeight, GameObject target, float distance, float angle, float kpWeight) { SteeringOutput fl = Flocking.GetSteering(ownKs, idTag, cohesionThreshold, repulsionThreshold, wanderRate, vmWeight, rpWeight, coWeight, wdWeight); SteeringOutput kp = KeepPosition.GetSteering(ownKs, target, distance, angle); if (kp == NULL_STEERING) { return(fl); } fl.linearAcceleration = fl.linearAcceleration * (1 - kpWeight) + kp.linearAcceleration * kpWeight; // fl.linearAcceleration = fl.linearAcceleration.normalized * ownKs.maxAcceleration; return(fl); }
public static SteeringOutput GetSteering(KinematicState ownKS, GameObject target, float distance = 10.0f, float angle = 180.0f, string tag = "REPULSIVE", float repulsionTh = 8.0f, float repulsiveWeight = 0.5f) { // compute both steerings SteeringOutput lr = LinearRepulsion.GetSteering(ownKS, tag, repulsionTh); SteeringOutput kp = KeepPosition.GetSteering(ownKS, target, distance, angle); // blend result SteeringOutput result = new SteeringOutput(); // (if one is SteeringBehaviour.NULL_STEERING return the other if (lr == NULL_STEERING) { return(kp); } else if (kp == NULL_STEERING) { return(lr); } // if none is SteeringBehaviour.NULL_STEERING blend with weights wlr and 1-wlr) result.linearAcceleration = kp.linearAcceleration * (1 - repulsiveWeight) + lr.linearAcceleration * repulsiveWeight; return(result); }