Ejemplo n.º 1
0
 void OnTriggerExit(Collider other)
 {
     if (!MTools.CollidersLayer(other, GroundLayer))
     {
         return;       //Ignore layers that are not Ground
     }
     HasTrack = false; // if the feet is on the air then can put a track
 }
Ejemplo n.º 2
0
 private void Reset()
 {
     reaction = MTools.GetInstance <ModeReaction>("Damaged");
     stats    = this.FindComponent <Stats>();
     Root     = transform.root.GetComponent <MDamageable>(); //Check if there's a Damageable on the Root
     if (Root == this)
     {
         Root = null;
     }
 }
Ejemplo n.º 3
0
 private void StartAligning(Vector3 TargetCenter)
 {
     TargetCenter.y = animal.transform.position.y;
     Debug.DrawLine(transform.position, TargetCenter, Color.red, 3f);
     StartCoroutine(MTools.AlignLookAtTransform(animal.transform, TargetCenter, LookAtTime));
     if (DistanceRadius > 0)
     {
         StartCoroutine(MTools.AlignTransformRadius(animal.transform, TargetCenter, AlignTime, DistanceRadius * animal.ScaleFactor));                    //Align Look At the Zone
     }
 }
Ejemplo n.º 4
0
 void Awake()
 {
     MainCamera = MTools.FindMainCamera();
     if (TextUI == null)
     {
         TextUI = GetComponent <Text>();
     }
     ScreenCenter        = transform.position;
     DefaultScreenCenter = transform.position;
 }
Ejemplo n.º 5
0
        void Reset()
        {
            ModeID modeID = MTools.GetInstance <ModeID>("Attack1");

            animal = GetComponent <MAnimal>();

            if (modeID != null)
            {
                this.ModeID = modeID;
            }
        }
Ejemplo n.º 6
0
 void OnTriggerEnter(Collider other)
 {
     if (!MTools.CollidersLayer(other, GroundLayer))
     {
         return;                                             //Ignore layers that are not Ground
     }
     if (!waitrack)
     {
         StartCoroutine(WaitForStep());      //Wait Half a Second before making another Step
         m_StepsManager.EnterStep(this);
         HasTrack = true;
     }
 }
Ejemplo n.º 7
0
 private void OnEnable()
 {
     MainCamera = MTools.FindMainCamera();
     Align();
 }
Ejemplo n.º 8
0
 void Awake()
 {
     MainCamera          = MTools.FindMainCamera();
     ScreenCenter        = transform.position;
     DefaultScreenCenter = transform.position;
 }
Ejemplo n.º 9
0
        private void LateUpdate()
        {
            float targetDist = m_OriginalDist;                                  // initially set the target distance

            m_Ray.origin    = m_Pivot.position + m_Pivot.forward * sphereCastRadius;
            m_Ray.direction = -m_Pivot.forward;

            var cols = Physics.OverlapSphere(m_Ray.origin, sphereCastRadius);   // initial check to see if start of spherecast intersects anything

            bool initialIntersect = false;
            bool hitSomething     = false;

            for (int i = 0; i < cols.Length; i++)                                        // loop through all the collisions to check if something we care about
            {
                if ((!cols[i].isTrigger) && !(MTools.CollidersLayer(cols[i], dontClip))) //is on a layer we don't want to clip
                {
                    initialIntersect = true;
                    break;
                }
            }

            if (initialIntersect)                                                               // if there is a collision
            {
                m_Ray.origin += m_Pivot.forward * sphereCastRadius;
                hits          = Physics.RaycastAll(m_Ray, m_OriginalDist - sphereCastRadius); // do a raycast and gather all the intersections
            }
            else                                                                              // if there was no collision do a sphere cast to see if there were any other collisions
            {
                hits = Physics.SphereCastAll(m_Ray, sphereCastRadius, m_OriginalDist + sphereCastRadius);
            }


            Array.Sort(hits, m_RayHitComparer);                         // sort the collisions by distance


            float nearest = Mathf.Infinity;                             // set the variable used for storing the closest to be as far as possible


            for (int i = 0; i < hits.Length; i++)                       // loop through all the collisions
            {
                // only deal with the collision if it was closer than the previous one, not a trigger, not in the Layer Mask
                if (hits[i].distance < nearest && (!hits[i].collider.isTrigger) && !MTools.CollidersLayer(hits[i].collider, dontClip))
                {
                    nearest      = hits[i].distance;                                    // change the nearest collision to latest
                    targetDist   = -m_Pivot.InverseTransformPoint(hits[i].point).z;
                    hitSomething = true;
                }
            }


            if (hitSomething)           // visualise the cam clip effect in the editor
            {
                Debug.DrawRay(m_Ray.origin, -m_Pivot.forward * (targetDist + sphereCastRadius), Color.red);
            }

            // hit something so move the camera to a better position
            protecting    = hitSomething;
            m_CurrentDist = Mathf.SmoothDamp(m_CurrentDist, targetDist, ref m_MoveVelocity, m_CurrentDist > targetDist ? clipMoveTime : returnTime);

            m_CurrentDist       = Mathf.Clamp(m_CurrentDist, closestDistance, m_OriginalDist);
            m_Cam.localPosition = -Vector3.forward * m_CurrentDist;
        }
Ejemplo n.º 10
0
 private void StartAligning(Vector3 TargetCenter)
 {
     Debug.DrawLine(animal.Center, TargetCenter, Color.red, 3f);
     StartCoroutine(MTools.AlignLookAtTransform(animal.transform, TargetCenter, AlignTime));
 }