※참고로 FPS처럼 캐릭터의 눈으로 보는 것처럼 한 것이 아니라 캐릭터에게 거리를 두고 (즉 3인칭 이동) 조작하는 것입니다.
문서 시험 시에는 잘 작동하겠으나 배틀넷 접속 후 플레이 할 경우에는 트리거와 서버의 상호 작용 때문에 버튼 누른 후 반응이 느리다는 점 유의해 주세요. 1.5 패치 이전에 작성된 글이라 약간 다를 수도 있는 점 유의해주세요.
![](https://t1.daumcdn.net/cfile/tistory/20782C4E504D7F2622)
먼저 맵에다 캐릭터로 설정할 유닛을 놓고 그 다음 구역을 하나 추가해 주세요. 그 후 구역 크기 설정은 XY 각각 0.25(최솟값)로 해주세요.
![](https://t1.daumcdn.net/cfile/tistory/1948304D504D7F4225)
그 다음 트리거로 가서 위 그림처럼 [변수] 하나를 만들고 거기에서 유형을 [유닛]으로 설정해 주세요. 그리고 시작값을 만들어 놓은 캐릭터로 설정하세요. 전 해병으로 합니다.
![](https://t1.daumcdn.net/cfile/tistory/1966ED4C504D7F5A22)
그 다음 트리거 하나를 만들어서 이벤트 - [게임] - [지도 초기화] 만들어 주시고요, 행동은 여러가지 추가 해야합니다. 먼저 [카메라] -카메라 마우스 상대 모드 잠금 켜기/끄기 플레이어: 1 (앞으로 플레이어 1은 자신을 뜻합니다.) 켜기/끄기: 켜기 -카메라 마우스 회전 켜기/끄기 전환 플레이어: 1 켜기/끄기: 켜기 -카메라 경계 설정 플레이어: 플레이어를 플레이어 그룹으로 변환 플레이어: 1 경계: 구역 001 (처음에 만든 구역) 미니맵: 수행 안 함
-카메라로 유닛 그룹 따르기 플레이어: 1 유닛 그룹: 유닛을 유닛 그룹으로 변환 (처음엔 '마지막으로 만든 유닛'인데 앞과 같이 바꾸어 주세요.) 유닛: 해병 (앞에 만들었던 변수를 설정해 주세요.) 따르기: 따르기 현재 대상 유지: 현재 대상 지우기 [구역]
-유닛에 구역 부착 오프셋: XY 지점 X: 0.0 Y: 0.0 유닛: 해병 [28.54, 38.98] (값) 구역: 구역 001 이렇게 하면 카메라가 마우스 움직이는 대로 움직입니다. 여기까지 윗 그림 설명이었구요.
![](https://t1.daumcdn.net/cfile/tistory/1243B550504D7F7E0F)
그 다음 트리거 하나를 더 만들어서 이벤트는 [타이머] -주기적인 이벤트 시간 유형: 게임 시간 지속 시간: 0.0001 행동은 [카메라] -카메라 경계 설정 플레이어: 플레이어를 플레이어 그룹으로 변환 플레이어: 1 경계: 구역 001 미니맵: 수행 안 함
이러면 카메라가 지속적으로 캐릭터를 쫓아갑니다.
다음은 캐릭터 이동입니다.
![](https://t1.daumcdn.net/cfile/tistory/125ED24A504D7FA829)
이벤트 [UI] -키 누름 플레이어: 1 키: W 아래로: 아래로 (아래로, 위로 가 있는데 아래로는 누른 상태 위로는 누르지 않은 상태를 가리킵니다.) Shift: 제외 (제외 허용 요구가 있는데 이건 하시는 분 마음입니다.) 제어: 제외 Alt: 제외
행동 [일반] - [While 반복문] 을 하면 위와 같이 While (조건) 참, do (행동)이 나오는 데요. 조건에선 [비교] 값 1: 트리거 켜짐 트리거: 현재 트리거 연산자: == 값 2: true
행동에선 [유닛] -지시 전달 유닛: 해병 [28.54, 38.98] 지시: 대상 지정한 지점에 지시 능력 명령: 이동 대상 지점: 극선 오프셋이 있는 지점 지점: 유닛의 위치 유닛: 해병 [28.54, 38.98] 각도: 플레이어의 카메라 Z축 회전 플레이어: 1 거리: 0.5 대기열: 기존 지시 바꾸기
[일반] -대기 시간 유형: 게임 시간 시간: 0.015 이렇게 만들어 주세요.
![](https://t1.daumcdn.net/cfile/tistory/1651434D504D7FC21D)
새 트리거의 이벤트는
[UI] -키 누름 플레이어: 아무 플레이어 키: W 아래로: 위로 (누르지 않은 상태) Shift: 제외 제어: 제외 Alt: 제외
행동은 [트리거] -트리거 정지 트리거: 앞으로 이동 (방금 전에 만든 트리거의 이름값입니다.) 이렇게 하면 W키를 통한 전진이 완성됩니다. 다음은 측면 이동인데요. (누를 버튼은 A나 D겠죠.) [유닛] -지시 전달 유닛: 해병 [28.54, 38.98] 지시: 대상 지정한 지점에 지시 능력 명령: 이동 대상 지점: 극선 오프셋이 있는 지점 지점: 유닛의 위치 유닛: 해병 [28.54, 38.98] 각도: 산술 (실수) 값 1: 플레이어의 카메라 Z축 회전 플레이어: 1 연산자: + 값 2: 90.0 거리: 0.5 대기열: 기존 지시 바꾸기
굵은 글씨처럼 각도를 산술로 하고 하위 메뉴를 선택해서 위와 같이 하면 좌측이동을 합니다. 우측 이동은 연산자: (-) , 값 2: 90.0 이겠고요. ※뒤로 이동은 키 'W'를 키 'S'로 바꿔주시고 지시 전달에서 거리를 '0.5'에서 '-0.5'로 바꿔주시거나 위의 측면 이동처럼 -180도를 해주셔도 됩니다.. 자 이렇게 하면 이동 트리거는 모두 완성이 되었습니다. ㅎ
다음은 공격 트리거 입니다. 공격 트리거는 트리거 하나로 해결됩니다.
![](https://t1.daumcdn.net/cfile/tistory/117E023E504D7FEA20)
....... 하나가 좀 복잡할 뿐이죠.... 일단 이전에 [변수]- 유형 : [유닛] - [캐릭터 유닛] 설정 되어있어야 하고요. 이벤트랑 행동은 기본이고 지역변수도 설정해야 합니다. 먼저 "이벤트" [UI] -마우스 클릭됨 플레이어: 1 마우스 버튼: 왼쪽 아래로: 아래로
다음 "지역 변수" (좌변은 모두 지역변수의 이름입니다.) -플레이어 = 0 <유형=정수> -대상 지점 = 지점 없음 <유형=지점> -대상 원 = 구역 없음 <유형=구역> -대상 그룹 = (비어 있는 유닛 그룹) <유형=유닛 그룹> -대상 유닛 = 유닛 없음 <유형=유닛> 이 정도로 생성만 하시면 됩니다. 그 다음..... 복잡한 행동입니다.... FPS이니 만큼 탄약 설정도 하면 좋겠지만 여기서 하면 또 글 넘어 갈까봐 생략합니다... 저도 힘들어요... (탄약을 미네랄, 가스를 남은 탄창의 갯수로 하거나 에너지를 이용해서 하면 될 듯 합니다.) [유닛] -유닛이 각도를 향하게 만들기 유닛: 해병 [28.54, 38.98] 지속 시간: 0.0 각도: 플레이어의 카메라 Z축 회전 플레이어: 1
[일반] -For 문 (정수) 시작: 1 끝: 15 (플레이어 수가 중립 제외하고 적대 포함하면 15죠.) 변수: 플레이어 (지역 변수 이름값) 증가값: 1 그리고 For 문의 하위 행동입니다.
[변수] -변수 설정 변수: 대상 지점 (지역 변수 이름값) 값: 극선 오프셋이 있는 지점 지점: 유닛의 위치 유닛: 해병 [28.54, 38.98] 각도: 플레이어의 카메라 Z축 회전 플레이어: 1 거리: 정수를 실수로 변환 값: 플레이어 -변수 설정 변수: 대상 원 (지역 변수 이름값) 값: 원을 구역으로 변환 중앙: XY 지점 X: 지점의 X 지점: 대상 지점 Y: 지점의 Y 지점: 대상 지점 반경: 1.0
-변수 설정 변수: 대상 그룹 (지역 변수 이름값) 값: 조건에 일치하는 구역 내 유닛 구역: 대상 원 (지역 변수 이름값) 유닛 필터: 배제됨: 미사일, 소멸됨, 숨김 플레이어: 15 (적대 플레이어) 유닛 유형: 아무 개수: 아무 양
-변수 설정 변수: 대상 유닛 (지역 변수 이름값) 값: 유닛 그룹에서 가져온 무작위 유닛 그룹: 대상 그룹 (지역 변수 이름값) 유형: 살아 있음
[일반] - If (조건) then (행동) else (행동) if then else 문의 하위 내용입니다. If -[비교] 값 1: 대상 유닛 (지역 변수 이름값) 연산자: !=(일치하지 않을 경우) 값 2: 유닛 없음
-[비교] 값 1: 플레이어가 유닛 볼 수 있음 플레이어: 1 유닛: 대상 유닛 (지역 변수 이름값) 연산자: == 값 2: true(참) Then [애니메이션] -애니메이션 재생 대상: 유닛에서 가져온 행위자 유닛: 해병 [28.54, 38.98] 애니메이션: 공격 식별자: 기본 플래그: 옵션 없음 혼합 시간: 기본 시간 [일반] -대기 시간 유형: 게임 시간 시간: 0.1 [환경] -유닛에 효과 만들기 (유닛으로부터) 시전자: 해병 [28.54, 38.98] 대상: 대상 유닛 (지역 변수 이름값) 효과: 해병 - 가우스 소총 (피해) Else If Then Else 조건문 If
-[비교] 값 1: 플레이어 (지역 변수 이름값) 연산자: == 값 2: 15 (적대 플레이어)
Then [애니메이션] -애니메이션 재생 대상: 유닛에서 가져온 행위자 유닛: 해병 [28.54, 38.98] 애니메이션: 공격 식별자: 기본 플래그: 옵션 없음 혼합 시간: 기본 시간 [일반] -대기 시간 유형: 게임 시간 시간: 0.1
[환경] -지점에 효과 만들기 (유닛으로부터) 시전자: 해병 [28.54, 38.98] 지점: 극선 오프셋이 있는 지점 지점: 유닛의 위치 유닛: 해병 [28.54, 38.98] 각도: 플레이어의 카메라 Z축 회전 플레이어: 1 거리: 정수를 실수로 변환 값: 플레이어 (지역 변수 이름값) 효과: 해병 - 가우스 소총 (피해)
Else (없음) 이후의 트리거는 온갖 문장에서 밖으로 나와서 생성합니다. [일반] -대기 시간 유형: 게임 시간 시간: 2.0
[트리거] -트리거 켜기/끄기 전환 트리거: 현재 트리거 상태: 켜기
[애니메이션] -애니메이션 완료 설정 대상: 유닛에서 가져온 행위자 유닛: 해병 [28.54, 38.98] 식별자: 기본 백분율: 100.0
휴 길었네요... 이상으로 트리거 부분은 끝입니다.
그 후에 이대로 그냥 해 버리면 적 유닛이 나오면 자동 공격하겠죠? 그러니 데이터에서 대상 캐릭터 유닛의 무기 필드에서 [무기 - 옵션] 을 클릭해서 [공격 시작 가능]을 체크 해제 해주시면 됩니다.
그리고 적에게 맞으면 플레이어가 저절로 도망갈텐데 이건 유닛 필드에서 [동작:응답]을 [도피 안 함 획득]으로 바꿔주시면 됩니다. 이러면 공격 모두 끝입니다.
그럼, 결과물을 보실까요?? (영상에는 도피 안 함 획득 설정을 안 해서 좀 이상합니다.)
|