A first person movement demonstration using WebGL 3D rendering.
Three.JS - a JavaScript library and API for 3D Graphics.
Keeny.nl - online asset market place for game models.
MTLLoader.JS - MTL Resource loader by angelxuanchang.
OBJLoader.JS - OBJ Resource loader by mrdoob.
Credit is given where due for these tools.
Locking The Camera
Moving forwards ('w' key is being pressed):
XcameraPosition = XcameraPosition - sin(YcameraRotation) - VmouseVelocity
ZcameraPosition = ZcameraPosition - (-cos(YcameraRotation)) - VmouseVelocity
Moving backwards ('s' key is being pressed):
XcameraPosition = XcameraPosition + sin(YcameraRotation) - VmouseVelocity
ZcameraPosition = ZcameraPosition - (-cos(YcameraRotation)) - VmouseVelocity
Strafing left ('a' key is being pressed):
XcameraPosition = XcameraPosition + sin(YcameraRotation + π / 2) - VmouseVelocity
ZcameraPosition = ZcameraPosition - (-cos(YcameraRotation + π / 2)) - VmouseVelocity
Strafing right ('d' key is being pressed):
XcameraPosition = XcameraPosition + sin(YcameraRotation - π / 2) - VmouseVelocity
ZcameraPosition = ZcameraPosition - (-cos(YcameraRotation - π / 2)) - VmouseVelocity
Turning camera right ('right arrow ->' key is being pressed):
YcameraRotation = YcameraRotation + VmouseVelocity
Turning camera left ('left arrow <-' key is being pressed):
YcameraRotation = YcameraRotation - VmouseVelocity
First Person Model Tracking
Positioning:
XcameraPosition = XcameraPosition - sin(YcameraRotation + π / 6) * C
YcameraPosition = YcameraPosition - C + sin(XcameraPosition + ZcameraPosition) * C
ZcameraPosition = ZcameraPosition - cos(YcameraRotation + π / 6) * C
Rotation:
XcameraRotation = XcameraRotation
YcameraRotation = YcameraRotation - π (ensures that the model faces the right way.)
ZcameraRotation = ZcameraRotation
Projectile Calculations
VprojectileVelocityX = sin(YcameraRotation)
VprojectileVelocityY = 0
VprojectileVelocityZ = cos(YcameraRotation)
Key | Movement |
---|---|
W | Walk forward. |
S | Walk backward. |
A | Strafe left. |
D | Strafe right. |
Space Bar | Fire weapon. |
Left Arrow Key | Turn camera left. |
Right Arrow Key | Turn camera right. |