밀하우스 마나스톰
GP
밀하우스 마나스톰
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Cocos Creato.. (35)
    • JavaScript 기.. (11)
    • JavaScript 게.. (4)
    • Dev Tool (1)
    • 1인 개발 (19)
      • 개발 환경 (4)
      • 기능 구현 (2)
      • 게임 리소스 (5)
      • 스팀 게임 출시 (4)
      • 좋은 글 스크랩 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유니티
  • typescript
  • 자바스크립트
  • 스팀
  • 코코스
  • Cocos Creator
  • javascript
  • 게임 출시
  • 무료 사운드
  • 웹 게임
  • 배열 함수
  • 타입스크립트
  • Sprite Frame
  • 해상도
  • resolution
  • 절차
  • steam
  • 게임 등록
  • 코코스 크리에이터
  • tween

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밀하우스 마나스톰

GP

ParticleSystem, Animation 재시작
Cocos Creator

ParticleSystem, Animation 재시작

2022. 3. 18. 18:06

Fx/effect_smoke에 파티클 컴포넌트가 붙어있다.

 

그리고 effect_smoke 파티클은 Loop가 해제돼있어서 한 번만 재생되고

 

Play On Awake 옵션으로 인해 노드가 활성화될 때 재생된다.

 

위와 같은 상황에서 effect_smoke 노드 또는 부모 노드인 Fx를  껐다가 다시 키면

 

effect_smoke는 이전 상태(이전 frame)를 이어서 재생한다. 노드가 꺼졌을 때 stop이 아니라 resume인 것이다.

 

이러한 성질은 cc.ParticleSystem 뿐만 아니라 cc.Animation에도 동일하게 적용된다.

 

유니티의의 경우 오브젝트를 껐다 켰을 때 Animation을 다시 처음부터 재생한다. 코코스와 유니티의 차이다.

 

 

어떤 이펙트를 껐다가 다시 켰을 때는 처음부터 다시 재생하도록 원하는 경우일 가능성이 높다.

 

노드를 다시 켰을 때 첫 frame부터 재생하도록 하는 코드를 추가해도 되지만,

 

위와 같은 상황은 워낙 자주 발생하고, 애니메이션 컴포넌트나 커스텀 컴포넌트도 동일한 문제가 발생할 수 있다.

 

 

결론은 파티클, 애니메이션 컴포넌트가 붙어있는 노드의 active가 꺼질 때

 

자동으로 파티클, 애니메이션을 stop 시키는 기능이 필요하다.

 

 

const {ccclass} = cc._decorator;

@ccclass
export default class DisableReset extends cc.Component {
    animations: Array<cc.Animation>;
    particles: Array<cc.ParticleSystem3D>;

    onLoad() {
        this.animations = this.node.getComponentsInChildren(cc.Animation);
        this.particles = this.node.getComponentsInChildren(cc.ParticleSystem3D);
    }

    onDisable() {
        this.animations.forEach(x => x.stop());
        this.particles.forEach(x => x.stop());
    }
}

간단하게 위와 같은 컴포넌트를 만들고 Fx 노드에 붙여주면 된다.

'Cocos Creator' 카테고리의 다른 글

[2.4.5 버그] cc.lerp  (0) 2022.04.01
클릭(터치)한 지점의 좌표 구하기  (0) 2022.03.25
일정시간 동안 숫자 증가시키는 UI  (0) 2022.03.18
실시간 시간 표시 (Timer)  (0) 2022.03.18
[2.4.5 버그] cc.tween repeatForever  (0) 2022.03.10
    'Cocos Creator' 카테고리의 다른 글
    • [2.4.5 버그] cc.lerp
    • 클릭(터치)한 지점의 좌표 구하기
    • 일정시간 동안 숫자 증가시키는 UI
    • 실시간 시간 표시 (Timer)
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바