Wednesday, August 14, 2013

BGE, FPS WASD хулгана

WASD аар хөдлөхийн тухайд гэвэл logic node-ээр хялбархан шийдэж болно. Харин хулгана ашиглаж камер болон тоглогчийн биеийг эргүүлэхийн тулд нэмэлт скрипт бичих хэрэгтэй. Дараах скриптийг бичлээ. Үүнд хулганы шилжлэг буюу delta x, delta y утгуудыг олж харгалзах биеүүдэд эргүүлэлтийн өнцөгийн утга байдлаар оноож өгнө. owner буюу камерийн дээш доош эргүүлэхийг хариуцсан node байх бөгөөд энэ parent буюу эх биетэй child-parent хамааралтай байна. Үүнийг blender-т control+P командаар биелүүлдэг.
import Rasterizer as R
import bge

half_window_height = R.getWindowHeight()/2
half_window_width  = R.getWindowWidth()/2

cont = bge.logic.getCurrentController()
owner = cont.owner
mouse = cont.sensors['Mouse']
parent = owner.parent
sens = owner['sensitivity'] 

x, y = mouse.position
x = (half_window_width - x)*sens # delta X
y = (half_window_height - y)*sens # delta Y

owner.applyRotation([-y,0.0,0.0], True)
parent.applyRotation([0.0,0.0,x], False)

R.setMousePosition(int(half_window_width), int(half_window_height))
Blender файлыг татах
EXE файлаар татах