Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #7
0
        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);
        }