void Start() { HeroDefiner.currentHero.OnJumped.Subscribe(jump => HeroJumped(jump.isKick)); groundChecker = transform.Find("GroundChecker").GetComponent <GroundChecker>(); transform.Find("DontWannaFallR").GetComponent <DontWannaFall>().about2fall += Turn; transform.Find("DontWannaFallL").GetComponent <DontWannaFall>().about2fall += Turn; transform.Find("Collider2Wall").GetComponent <Collider2Wall>().touched2Wall += Turn; state = toRightFirst ? GierState.BeforeFindingR : GierState.BeforeFindingL; }
void Turn(object sender, EventArgs e) { if (state == GierState.BeforeFindingL) { state = GierState.BeforeFindingR; eyeRenderer.flipX = false; } else if (state == GierState.BeforeFindingR) { state = GierState.BeforeFindingL; eyeRenderer.flipX = true; } }
void Update() { RigidBody.velocity = new Vector2(0, RigidBody.velocity.y); switch (state) { case GierState.BeforeFindingR: if (NearHero()) { Find(); } RigidBody.MoveX_ConsideringGravity(walkSpeed); HontaiSR.transform.Rotate(-normalRotateSpeed); break; case GierState.BeforeFindingL: if (NearHero()) { Find(); } RigidBody.MoveX_ConsideringGravity(-walkSpeed); HontaiSR.transform.Rotate(normalRotateSpeed); break; case GierState.FindingNow: findingCount++; if (findingCount > framesBeforeRun) { state = GierState.Running; eyeRenderer.sprite = eyeRunning; findingCount = 0; } break; case GierState.Running: if (HeroDefiner.CurrentPos.x > transform.position.x + 10) { RigidBody.MoveX_ConsideringGravity(runSpeed); HontaiSR.transform.Rotate(-runningRotateSpeed); eyeRenderer.flipX = false; } if (HeroDefiner.CurrentPos.x < transform.position.x - 10) { RigidBody.MoveX_ConsideringGravity(-runSpeed); HontaiSR.transform.Rotate(runningRotateSpeed); eyeRenderer.flipX = true; } if (MyMath.DistanceXY(HeroDefiner.CurrentPos, transform.position) > distanceToMissHero) { if (RigidBody.velocity.x > 0) { state = GierState.BeforeFindingR; } else { state = GierState.BeforeFindingL; } eyeRenderer.sprite = eyeNormal; } break; } }
void Find() { state = GierState.FindingNow; eyeRenderer.sprite = eyeFinding; eyeRenderer.flipX = HeroDefiner.CurrentPos.x < transform.position.x; }