본문 바로가기
Flutter/GAME Programming

[플러터 게임] 중급 게임 기술/ 복잡한 애니메이션과 이펙트

by Maccrey Coding 2024. 10. 6.
반응형

 

게임 개발에서 애니메이션과 이펙트는 매우 중요합니다.

사용자에게 재미있고 매력적인 경험을 제공하기 위해 애니메이션을 잘 활용하는 것이 필요합니다. Flutter를 이용하면 쉽게 다양한 애니메이션과 이펙트를 구현할 수 있습니다.

오늘은 AnimationSequenceAnimationController를 이용해 복잡한 애니메이션을 만들고, 간단한 파티클 이펙트를 구현해보겠습니다.

1. AnimationSequence와 AnimationController

AnimationController란?

AnimationController는 애니메이션의 상태를 관리하는 클래스입니다.

예를 들어 애니메이션이 얼마나 빨리 진행되는지, 언제 시작하고 끝나는지를 설정할 수 있습니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AnimationExample(),
    );
  }
}

class AnimationExample extends StatefulWidget {
  @override
  _AnimationExampleState createState() => _AnimationExampleState();
}

class _AnimationExampleState extends State<AnimationExample>
    with SingleTickerProviderStateMixin {
  late AnimationController _controller;
  late Animation<double> _animation;

  @override
  void initState() {
    super.initState();
    
    // AnimationController 생성
    _controller = AnimationController(
      duration: const Duration(seconds: 2), // 2초 동안 애니메이션 진행
      vsync: this,
    );

    // Animation 생성
    _animation = Tween<double>(begin: 0.0, end: 300.0).animate(_controller);
    
    // 애니메이션 반복 설정
    _controller.repeat(reverse: true);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('애니메이션 예제')),
      body: Center(
        child: AnimatedBuilder(
          animation: _animation,
          builder: (context, child) {
            return Container(
              width: _animation.value, // 애니메이션 값에 따라 너비 변화
              height: 100.0,
              color: Colors.blue,
            );
          },
        ),
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose(); // 컨트롤러 메모리 해제
    super.dispose();
  }
}

코드 설명

  1. AnimationController를 사용하여 애니메이션의 지속 시간을 설정합니다.
  2. Tween을 이용해 애니메이션의 시작과 끝 값을 정의합니다.
  3. AnimatedBuilder를 사용해 애니메이션을 쉽게 적용합니다. 이곳에서 컨테이너의 너비가 애니메이션 값에 따라 변화합니다.
  4. 마지막으로 dispose() 메서드에서 컨트롤러를 해제하여 메모리를 관리합니다.

2. 파티클 이펙트 구현

파티클 이펙트란?

파티클 이펙트는 게임에서 흔히 볼 수 있는 효과입니다. 예를 들어, 폭발, 불꽃, 눈, 비 등의 이펙트를 만들어주는 효과입니다.

코드 예시

파티클 이펙트를 구현하기 위해 flutter_particles 패키지를 사용할 수 있습니다. 아래는 간단한 파티클 이펙트를 만드는 예제입니다.

import 'package:flutter/material.dart';
import 'package:flutter_particles/flutter_particles.dart';

void main() {
  runApp(MyParticleApp());
}

class MyParticleApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ParticleExample(),
    );
  }
}

class ParticleExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('파티클 이펙트 예제')),
      body: Center(
        child: ParticleWidget(),
      ),
    );
  }
}

class ParticleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Particles(
      count: 100, // 파티클 수
      color: Colors.red, // 파티클 색상
      size: 5.0, // 파티클 크기
      speed: 300.0, // 파티클 속도
      spread: 30.0, // 파티클 퍼짐 정도
    );
  }
}

코드 설명

  1. Particles 위젯을 사용하여 파티클 이펙트를 생성합니다.
  2. count, color, size, speed, spread 속성을 통해 파티클의 특성을 조정할 수 있습니다.

Flutter를 사용하여 게임에서 복잡한 애니메이션과 파티클 이펙트를 쉽게 구현할 수 있습니다.

위의 코드 예시를 참고하여 자신만의 게임에 멋진 애니메이션과 이펙트를 추가해보세요!

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형