개인 자료란 (JE)

  서버 커뮤니티

Profile fntl 대표칭호 없음
Profile

질문하기 커맨드

여러 디스플레이로 애니메이션

2023.11.27 조회 수 199 추천 수 0
이해도 입문자 
게임버전 (JE) 1.20.1 
게임버전 (BE) 관련없음 

한 개의 디스플레이를 애니메이팅 하는 방법은 알아냈는데, 여러 개의 디스플레이로 더 복잡한 애니메이션을 만들고 싶을때는 하나하나 움직이는 것 말고 더 편한 방법이 없나요? 아무리 검색해봐도 모르겠네요...

1개의 댓글

김형원
2023.11.30

아래 설명은 디스플레이 엔티티의 transformation, interpolation과 데이터팩에 대한 기본적인 이해가 있는 사람이라는 가정 하에 이야기하는 것입니다

 

```execute as @e[tag=개쩌는태그] on passengers run function 개쩌는함수```

1. 이런 식으로 작성하게 된다면 개쩌는태그를 가진 엔티티의 탑승자가 하나씩 차례대로 개쩌는함수를 실행한다

2. 때문에 개쩌는함수의 첫 줄에서 스코어를 1 더하는 명령어를 넣는다면 몇번째 디스플레이인지 알 수 있다

 

아래 코드는 제가 코뿔소의 걷기 애니메이션을 만든 방식을 살짝 변경한 방식의 코드입니다

들여쓰기와 #으로 표기된 부분은 실행된 함수입니다

```

scoreboard players set display_cnt num 0

execute as @e[tag=Dinosaur] on passengers run function pack:animation

#execute if score display_cnt num matches 0 run data merge entity @s {transformation:{...},start_interpolation:0,interpolation_duration:숫자}

#execute if score display_cnt num matches 1 run data merge entity @s {transformation:{...},start_interpolation:0,interpolation_duration:숫자}

#execute if score display_cnt num matches 2 run data merge entity @s {transformation:{...},start_interpolation:0,interpolation_duration:숫자}

#(이하 반복)

#scoreboard players add display_cnt num 1

```

위 코드에서 (이하 반복) 부분에는 display_cnt의 num을 감지하는 부분의 숫자만 바꿔서 작성하시면 됩니다

 

앞의 분이 태그를 붙이라고 말한 것은 ```execute store result score display_cnt num if entity @e[tag=leg1]```위와 같이 처럼 어떤 디스플레이인지 구분하기 위함이었지만, 스코어를 더하는 방식으로 셀 수 있으니 특별한 태그는 없어도 됩니다

 

다만, 페이퍼와 같은 특수한 경우에서는 엔티티가 소환된 순서대로 명령어가 작동하지 않기에 애니메이션이 작동하지 않을 수 있습니다