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 }
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; } }
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 } }
void Awake() { MainCamera = MTools.FindMainCamera(); if (TextUI == null) { TextUI = GetComponent <Text>(); } ScreenCenter = transform.position; DefaultScreenCenter = transform.position; }
void Reset() { ModeID modeID = MTools.GetInstance <ModeID>("Attack1"); animal = GetComponent <MAnimal>(); if (modeID != null) { this.ModeID = modeID; } }
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; } }
private void OnEnable() { MainCamera = MTools.FindMainCamera(); Align(); }
void Awake() { MainCamera = MTools.FindMainCamera(); ScreenCenter = transform.position; DefaultScreenCenter = transform.position; }
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; }
private void StartAligning(Vector3 TargetCenter) { Debug.DrawLine(animal.Center, TargetCenter, Color.red, 3f); StartCoroutine(MTools.AlignLookAtTransform(animal.transform, TargetCenter, AlignTime)); }