ARMA가 단순히 유저간의 게임이 아니라 훗날 영역을 넓히는데 있어서 중요한 부분이 이 카메라 컨트롤 부분이라고 생각하기때문에 의외로 꽤 중요한 부분이라고 생각한다.
http://community.bistudio.com/wiki/Category:Command_Group:_Camera_Control
camCreate
객체를 이 방식을 이용해서 만들 수 있지만 차량의 경우 탈 수 없다. 이 방식으로 생성된 유닛은 STATIC으로 받아들여진다.createVehicle로 만들어진 것과의 차이는 다른 객체와의 충돌에 대한 고려없이 그 위치에 바로 생성된다는 점이다. 그리고 후에 설명될 camCommit 명령을 기다리지 않고 바로 작동된다.
설명에는 멀티플레이 상황에서 이 함수로 만들어진 객체는 근접했을때만 보이는 클라이언트적 효과에 불과하고 나와있는데 이게 ARMA 3에서도 적용되는건지, 그리고 사라지는 거리가 어느정도인지는 모르겠다
- Object = type camCreate position
- type : camera, seagull 을 포함한 OFP 차량 클래스명
camDestroy
말 그대로 생성된 캠을 삭제하는 스크립트이다.
- camDestroy object
camSetPos
카메라의 위치를 설정한다.
- camera camSetPos position
- camPreparePos
뒷부분에 나올 camPreload를 위한 설정이다.
- camera camPreparePos position
camCommand
카메라나 camCreate로 생성된 것들에게 명령을 수행시키는 스크립트로, manual on/off는 모든 타입에서 활용할 수 있고, camera타입에서는 inertia on/off를, seagull에서는 landed와 airborne을 사용할 수 있으며, landed를 명령하면 비행중이던 seagull은 바닥에 내리앉고,airborne은 반대로 수행된다.
seagull에게 그냥 명령을 실행하면 안되고 manual on을 해준 뒤에 airborne이던 landed던 실행해줘야 반응하는 것 같다.
- camera camCommand command
- command : String - "manual on", "manual off", "inertia on", "inertia off", "landed", "airborne"
camCommit
지정된 시간내에 자연스럽게 카메라가 전환되도록하고 시간이 0이면 즉시 전환된다.만약에 설정이 안되어있으면 camSetTarget, cameraEffect등의 내용을 무시하고 특정 방향만 바라본다.
- camera camCommit time
기본 예제 실행시 cam1 = "camera" camCreate (position this); cam1 camSetTarget player; cam1 cameraEffect ["internal", "BACK"]; cam1 camCommit 0; cam1 camsetPos (position player); cam1 camCommit 6; |
- camCommitPrepare : 같은 기능을 한다
camera camCommitPrepared time
camCommitted
카메라에 지정된 마지막 camCommit이 끝났는지 여부에 따른 참/거짓값을 출력한다.
- Boolean = camCommitted camera
cam1 = "camera" camCreate (position this); cam1 camSetTarget player; cam1 cameraEffect ["internal", "BACK"]; cam1 camCommit 0; cam1 camsetPos (position player); cam1 camCommit 6; |
showCinemaBorder
영화와 같은 외곽테두리를 출력할 것인지를 true/false로 지정해준다.
- showCinemaBorder show
- show : Boolean
showCinemaBorder false; |
cameraEffect
카메라나 객체의 다른 효과로 전환한다. 만약 1인칭 조준에서 3인칭으로 바꾸고 싶으면 switchCamera를 사용하라고한다.
camCreate후에 최소한 이 cameraEffect는 지정해줘야 카메라가 작동한다.
- camera cameraEffect [name, position]
- name : String - the Effect Type
- Internal
- External
- Fixed : 타겟을 지정해도 바라보지 않는다.
- FixedWithZoom : 고정된 상황에서 좀더 줌인해서 본다
- Terminate : 현재 카메라 화면에서 벗어나서 플레이어 시점으로 전환한다. 다시카메라로 돌아가고 싶으면 camCommit을 사용하면 된다.
- position : String - position of the effect
- TOP
- LEFT
- RIGHT
- FRONT
- BACK (주로 쓰임)
cam1 = "camera" camCreate (position this); cam1 camSetTarget player; cam1 cameraEffect ["Internal", "BACK"]; cam1 camCommit 0; |
cameraOn
카메라가 지정되어있는 객체의 값을 리턴
- Object = cameraOn
camPreload
카메라를 일정시간 이전에 미리 준비시켜두는 스크립트로, 현재 카메라위치와 많이 떨어져있는 곳에 카메라를 설치 후 이동시키면 렌더링등의 문제가 발생할 수 있으므로, 이를 막기 위한 방편이다.
- camera camPreload time
- camPreloaded
미리 설정해둔 카메라가 준비되었는지를 확인하는스크립트. camPreload로 시간을 많이 대기시켜 놓았어도 준비가 되었으면 참값을 넘겨준다.
- Boolean = camPreloaded camera
camSetBank
카메라 뱅크 앵글값을 설정한다.
- camera camSetBank bank
- camPrepareBank
camPreload를 위한 bank설정이다
- camera camPrepareBank bank
camSetDir
카메라 방향을 설정한다.
현재 ARMA 3에선 버그라는 것 같다.
- camera camSetDir direction
- direction : Number - 각도 0~360
- camPrepareDir
camPreload를 위한 방향설정이다.
- camera camPrepareDir direction
camSetDive
카메라 다이브 앵글을 설정한다.
- camera camSetDive dive
- camPrepareDive
camPreload를 위한 다이브 앵글 설정이다.
- camera camPrepareDive dive
camSetFocus
카메라 포커스와 블러를 설정해준다. commit을 지정해줘야한다.
- camera camSetFocus focusRange
- focusRange :[distance,blur]
cam1 = "camera" camCreate (position this); cam1 setDir -90; cam1 cameraEffect ["internal", "BACK"]; cam1 camSetFocus [0,0]; cam1 camCommit 0; cam1 camSetFocus [1000,100]; cam1 camCommit 10; |
- camPrepareFocus
camPreload를 위한 포커스 설정이다.
- camera camPrepareFocus focusRange
camSetFov
카메라의 줌 레벨을 정한다. commit을 지정해줘야한다.
- camera camSetFov level
- level :줌 레벨, 0.01 ~ 2
cam1 = "camera" camCreate (position this); cam1 setDir -90; cam1 cameraEffect ["internal", "BACK"]; cam1 camSetFov 2; cam1 camCommit 0; cam1 camSetFov 0.01; cam1 camCommit 10; |
- camPrepareFov
camPreload를 위한 줌 설정이다.
- camera camPrepareFov fieldOfView
camSetFovRange
자동 줌의 시작값과 끝값을 정한다. 기본 줌값은 0.7. 가장 가까운건 0, 가장 먼 줌값은 1이다.
- camera camSetFovRange fovRange
- fovRange :줌 레벨, 0 ~ 1
- camPrepareFovRange
camPreload용 자동줌 설정이다.
- camera camPrepareFovRange fovRange
camSetTarget
카메라가 바라봐야할 타겟이나 포지션을 지정해주고 camCommit을 동반합니다.
- camera camSetTarget target
- camera : Object or type "camera"
- target : Object - target Location
- camPrepareTarget
camPreload용 타겟 설정용 스크립트다.
- camera camPrepareTarget position
- camTarget
카메라의 타겟 객체를 리턴합니다.
- camTarget camera
camSetRelPos
camSetTarget과 함께 사용해서 카메라의 타겟과 관련된 좌표를 설정해서 그 위치에 카메라가 위치하도록한다. camCommit을 동반해야한다.
타겟이 움직이면 따라 움직인다.
- camera camSetRelPos position
cam1 = "camera" camCreate (position this); cam1 setDir 120; cam1 cameraEffect ["internal", "BACK"]; cam1 camSetTarget target; cam1 camSetRelPos [2,2,4]; cam1 camCommit 10; |
- camPrepareRelPos
camPreload를 위한 타겟에 맞춘 카메라 위치설정이다.
- camera camPrepareRelPos position
camUseNVG
나이트비전 사용의 유무를 true / false로 지정합니다.
- camUseNVG set
enableEndDialog
onPlayerKIlled.sqs에 삽입되어있는, 플레이어 사망 후의 카메라 동작을 실행하도록 합니다.
setCameraInterest
카메라가 주어진 값에 따라 관심도가 달라진다. 기본 관심도값은 0이고, 어떤 유닛이 말을 할경우 관심도는 50이 된다.
- entity setCameraInterest interest
- cameraInterest
Camera Interest값을 리턴한다.
- Number = cameraInterest entity
switchCamera
유닛의 카메라 모드를 바꾼다.
- unitName switchCamera mode
cam1 = "seagull" camCreate (position this); cam1 camCommand "manual on"; cam1 switchCamera "internal"; |
댓글 없음:
댓글 쓰기