protected override void DoUpdate(double elapsed) { var motionInterval = 18.0 / Neko.Speed; if (motionInterval <= TotalElapsed) { if (Neko.GetCollisionRect().Contains(Neko.TrackingTargetPos.Value)) { _context.SetState(_context.DefaultState); return; } var angle = MathUtil.RadianToDegree(Math.Atan2(-(Neko.TrackingTargetPos.Value.Y - Neko.Pos.Y), Neko.TrackingTargetPos.Value.X - Neko.Pos.X)); angle = (angle + 360) % 360; var no = (int)((angle + 22.5) % 360 / 45.0); Neko.SetImage($"move{no}_{_motion}.png"); _motion = (_motion + 1) % 2; // 移動 Neko.SetPos( new Point( Neko.Pos.X + Math.Cos(MathUtil.DegreeToRadian(angle)) * TotalElapsed * Neko.Speed, Neko.Pos.Y - Math.Sin(MathUtil.DegreeToRadian(angle)) * TotalElapsed * Neko.Speed)); TotalElapsed -= motionInterval; } }
protected override void DoUpdate(double elapsed) { const double MotionInterval = 0.5; if (MotionInterval <= TotalElapsed) { _motion = (_motion + 1) % 2; Neko.SetImage($"sleep_{_motion}.png"); TotalElapsed -= MotionInterval; } }
protected override void DoUpdate(double elapsed) { const double MotionInterval = 0.12; if (MotionInterval <= TotalElapsed) { Neko.SetImage($"foot_{_motion}.png"); _motion = (_motion + 1) % 2; TotalElapsed -= MotionInterval; _count++; } if (12 < _count) { _context.SetState(_context.DefaultState); } }
protected override void DoReset() { Neko.SetImage("aware.png"); }
protected override void DoReset() { _changeInterval = MathUtil.Rand(1, 4); Neko.SetImage("default.png"); }
protected override void DoReset() { Neko.SetImage("sleep_0.png"); }
protected override void DoReset() { Neko.SetImage("yawn.png"); }
protected override void DoReset() { Neko.SetImage("default.png"); }