728x90
반응형
안녕하세요.
애니메이터가 들려주는 맥스 스크립트의 스크립팅하는 애님입니다.
지난번에 이어 'Controller' 작업을 계속하겠습니다.
참고로 지난번 시간에 다음까지 진행했습니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
rollout controllerChange_Rollout "ControllerChange"
(
radiobuttons changeType_rbt "변경" labels:#("원래", "TCB")
button run_btn "실행"
on run_btn pressed do
(
if(changeType_rbt.state == 1) then
(
$.position.controller = Position_XYZ()
$.rotation.controller = Euler_XYZ()
)
else
(
$.position.controller = TCB_Position()
$.rotation.controller = TCB_Rotation()
format "changeType_rbt.state = %\n" changeType_rbt.state
)
)
)
createdialog controllerChange_Rollout
|
cs |

이전시간과 같이 박스 오브젝트를 하나 만들겠습니다.

다음으로 라디오버튼을 'Position'과 'Rotation'으로 나누겠습니다.
|
1
2
|
radiobuttons changePos_rbt "Pos 변경" columns:1 labels:#("변경없음", "position XYZ", "TCB") pos:[5, 5]
radiobuttons changeRot_rbt "Rot 변경" columns:1 labels:#("변경없음", "Euler XYZ", "TCB") pos:[90, 5]
|
cs |

원본 스크립트의 3번 라인에 위 스크립트의 1 ~ 2번 라인으로 변경합니다.
'변경 없음'은 스크립트를 실행할 때 변경하고 싶지 않은 경우 선택하도록 합니다.
하지만 작동은 하지 않으니 실행버튼 이벤트를 수정해야 합니다.
다음과 같이 바꿔 보겠습니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
on run_btn pressed do
(
if(changePos_rbt.state == 2) then
(
$.position.controller = Position_XYZ()
)
else if(changePos_rbt.state == 3) then
(
$.position.controller = TCB_Position()
)
if(changeRot_rbt.state == 2) then
(
$.rotation.controller = Euler_XYZ()
)
else if(changeRot_rbt.state == 3) then
(
$.rotation.controller = TCB_Rotation()
)
)
|
cs |
if문을 두개로 나누어 'position'과 'Rotation'으로 분리를 하고, 각각의 if문 아래 else if를 두어 라디오 버튼의 선택에 따라 맞춰 controller를 변경하도록 했습니다.
여기서 특이한 점은 라디오 버튼의 'state'값을 1이 아닌 2와 3이 나올때 변경을 시키는데 1은 변경을 하지 않을 것이기 때문에 'state'가 1 값이 나와도 아무런 작동을 하지 않기 때문입니다.
즉 1이 나오면 '작동하지 않음' 입니다.
필요하다면 여러분은 더 많은 선택사항을 추가하여 자신에 맞춰 사용할 수 있습니다.
오늘 배운 내용은 다음과 같습니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
rollout controllerChange_Rollout "ControllerChange"
(
radiobuttons changePos_rbt "Pos 변경" columns:1 labels:#("변경없음", "position XYZ", "TCB") pos:[5, 5]
radiobuttons changeRot_rbt "Rot 변경" columns:1 labels:#("변경없음", "Euler XYZ", "TCB") pos:[90, 5]
button run_btn "실행"
on run_btn pressed do
(
if(changePos_rbt.state == 2) then
(
$.position.controller = Position_XYZ()
)
else if(changePos_rbt.state == 3) then
(
$.position.controller = TCB_Position()
)
if(changeRot_rbt.state == 2) then
(
$.rotation.controller = Euler_XYZ()
)
else if(changeRot_rbt.state == 3) then
(
$.rotation.controller = TCB_Rotation()
)
)
)
createdialog controllerChange_Rollout
|
cs |
아직은 부족한 점이 있네요.
지금까지는 오브젝트 하나만 선택해야 정상적으로 작동을 합니다.
다음번에는 여러 개를 선택했을 때 한꺼번에 변경하는 방법에 대해서 설명하겠습니다.
728x90
반응형
'맥스스크립트 심화' 카테고리의 다른 글
| 파일머지 편하게하기(3) (0) | 2021.04.26 |
|---|---|
| 파일머지 편하게하기(2) (0) | 2021.04.23 |
| 파일머지 편하게하기(1) (0) | 2021.04.22 |
| 선택한 노드 Controller 변경하기(3) (0) | 2021.04.21 |
| 선택한 노드 Controller 변경하기(1) (3) | 2021.04.19 |
| actionMan을 이용한 대화상자(3) (0) | 2021.04.16 |
| actionMan을 이용한 대화상자(2) (0) | 2021.04.15 |
| actionMan을 이용한 대화상자(1) (0) | 2021.04.14 |