void Start() { _currentState = LightEaterState.peek; GetComponentInChildren <Renderer>().sharedMaterial = GetComponentInChildren <Renderer>().material; ltMat = GetComponentInChildren <Renderer>().sharedMaterial; ltMat.SetFloat("_GlowIntensity", glowIntensity); }
void HandleEatingState(Transform molPosition) { _currentState = LightEaterState.eating; molPosition.GetComponent <Moluvusha>().EatMoluvusha(eatingTime); anim.SetTrigger(eatingHashTrigger); }
public void SetLightEaterMoluvusha(Transform closestMoluvusha) { if (currentState != LightEaterState.eating) { _closestMoluvusha = closestMoluvusha; currentState = _closestMoluvusha ? LightEaterState.chasing : LightEaterState.peek; } }
void HandleEatingState(Transform molPosition) { _currentState = LightEaterState.eating; molPosition.GetComponent <Moluvusha>().EatMoluvusha(eatingTime); fixedEatingPosition = molPosition.position; eatTimeFlag = Time.fixedTime + eatingTime; StartCoroutine(IntensityCoroutine(1.0f, 0.1f)); }
void HandleRetract() { timeInterpolate = GameUtility.changeTowards(timeInterpolate, 0.0f, accelerationSpeed, Time.fixedDeltaTime); if (timeInterpolate < 0.05f) { outVFX.SetActive(false); currentState = LightEaterState.hide; if (anim) { anim.SetTrigger(hideTrigger); } } }
void FixedUpdate() { switch (_currentState) { case LightEaterState.peek: targetHead.localPosition = new Vector3(GameUtility.changeTowards(targetHead.localPosition.x, 0.0f, Mathf.Abs(accelerationSpeed), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.localPosition.y, peekHeightPercentage * startingDistance, Mathf.Abs(accelerationSpeed), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.localPosition.z, 0.0f, Mathf.Abs(accelerationSpeed), Time.fixedDeltaTime)); break; case LightEaterState.chasing: Vector3 dirNormal = (targetHead.position - _closestMoluvusha.position).normalized; targetHead.position = new Vector3(GameUtility.changeTowards(targetHead.position.x, _closestMoluvusha.position.x, Mathf.Abs(accelerationSpeed * dirNormal.x), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.position.y, _closestMoluvusha.position.y, Mathf.Abs(accelerationSpeed * dirNormal.y), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.position.z, _closestMoluvusha.position.z, Mathf.Abs(accelerationSpeed * dirNormal.z), Time.fixedDeltaTime)); if ((_closestMoluvusha.position - targetHead.position).magnitude < 1.0f) { HandleEatingState(_closestMoluvusha); } break; case LightEaterState.eating: Vector3 dirNormal2 = (targetHead.position - fixedEatingPosition).normalized; if (Time.fixedTime > eatTimeFlag) { _currentState = LightEaterState.peek; } else { targetHead.position = new Vector3(GameUtility.changeTowards(targetHead.position.x, fixedEatingPosition.x, Mathf.Abs(accelerationSpeed * dirNormal2.x), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.position.y, fixedEatingPosition.y, Mathf.Abs(accelerationSpeed * dirNormal2.y), Time.fixedDeltaTime), GameUtility.changeTowards(targetHead.position.z, fixedEatingPosition.z, Mathf.Abs(accelerationSpeed * dirNormal2.z), Time.fixedDeltaTime)); } break; default: break; } // ResimulateBonePosition((targetHead.position - skeletonObject.position).magnitude); skeletonObject.localScale = new Vector3(skeletonObject.localScale.x, Mathf.Min(1.0f, (skeletonObject.position - targetHead.position).magnitude / startingDistance), skeletonObject.localScale.z); // ResimulateBoneScale((targetHead.position - skeletonObject.position).magnitude); glowIntensity = GameUtility.changeTowards(glowIntensity, 0.0f, 1.0f / eatingTime, Time.fixedDeltaTime); ltMat.SetFloat("_GlowIntensity", glowIntensity); }
void HandleEating() { if (Time.time > eatFlag + timeToEat) { currentState = LightEaterState.retract; if (anim) { anim.SetTrigger(retractTrigger); } } else { if (targetMoluvusha) { targetPoint.transform.position = targetMoluvusha.transform.position; anim.SetFloat(moluvushaSize, Mathf.Clamp01(targetMoluvusha.transform.lossyScale.x)); } } }
void HandleHide() { if (targetMoluvusha && isEnableChasing) { currentState = LightEaterState.chasing; targetPoint.transform.position = targetMoluvusha.transform.position; outVFX.SetActive(true); if (anim) { anim.SetTrigger(moveTrigger); } } else { timeInterpolate = GameUtility.changeTowards(timeInterpolate, 0.0f, accelerationSpeed, Time.fixedDeltaTime); } }
void HandleChasing() { if (targetMoluvusha) { // Vector3 reverseTanNorm = -1.0f * bezierScript.GetTangentAt(0.05f).normalized; // Vector3 reverseTan = new Vector3(-2.0f * reverseTanNorm.x / reverseTanNorm.y,-2.0f,0.0f); // transform.position = startPoint.transform.position + reverseTan; targetPoint.transform.position = targetMoluvusha.transform.position; timeInterpolate = GameUtility.changeTowards(timeInterpolate, 1.0f, accelerationSpeed, Time.fixedDeltaTime); if (timeInterpolate >= 0.95f) { eatFlag = Time.time; currentState = LightEaterState.eating; targetMoluvusha.GetComponent <Moluvusha>().EatMoluvusha(timeToEat); if (ltMat) { ltMat.SetGlowIntensity(1.0f); } if (anim) { anim.SetTrigger(eatTrigger); } } } else { currentState = LightEaterState.retract; if (anim) { anim.SetTrigger(retractTrigger); } } }