Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///Main
- //Mouse controls
- direction -= sensitivity * (display_mouse_get_x() - display_get_width() *.5)
- pitch += sensitivity * (display_mouse_get_y() - display_get_height() *.5)
- //Limit Pitch
- if pitch > 80 {
- pitch=80;
- }
- if pitch < -80 {
- pitch=-80;
- }
- //Center mouse
- if !keyboard_check(ord("M")) {
- display_mouse_set(display_get_width()*.5,display_get_height()*.5);
- }
- //Get keys
- fbkeys = keyboard_check(ord("W"))-keyboard_check(ord("S"));
- rlkeys = keyboard_check(ord("D"))-keyboard_check(ord("A"));
- //Add velocity
- fbvel += fbkeys*acc;
- rlvel += rlkeys*acc;
- //Speed limit
- if fbvel < -maxspd {
- fbvel = -maxspd;
- }
- if fbvel > maxspd {
- fbvel = maxspd;
- }
- if rlvel < -maxspd {
- rlvel = -maxspd;
- }
- if rlvel > maxspd {
- rlvel = maxspd;
- }
- //Decelerate
- if (fbkeys=0 && abs(fbvel) >= acc) {
- fbvel-=sign(fbvel)*acc;
- }
- if (rlkeys=0 && abs(rlvel) >= acc) {
- rlvel-=sign(rlvel)*acc;
- }
- //Set Z velocity
- if !place_meeting_ext(x,y,z,o_psolid) {
- zvel-=grav;
- }
- //Jumping
- if place_meeting_ext(x,y,z-1,o_psolid) {
- if keyboard_check_pressed(vk_space) {
- zvel+=jumpheight;
- }
- }
- //Running
- if (keyboard_check(vk_shift) && fbvel > 0 && height = walkheight) {
- maxspd=runmaxspd;
- if fov<runfov {
- fov+=2;
- }
- }
- else {
- maxspd=walkmaxspd;
- if fov>walkfov {
- fov-=2;
- }
- }
- //Crouching
- if keyboard_check(vk_control) {
- maxspd=crouchmaxspd;
- if height > crouchheight {
- height-=2;
- }
- }
- else {
- if !place_meeting_ext(x,y,z+walkheight, o_psolid) {
- maxspd=walkmaxspd;
- if height < walkheight {
- height+=2;
- }
- }
- }
- //Translate Velocities
- xvel = lengthdir_x(fbvel, direction) + lengthdir_x(rlvel, direction-90);
- yvel = lengthdir_y(fbvel, direction) + lengthdir_y(rlvel, direction-90);
- //Collisions
- //X
- if !place_meeting_ext(x+xvel,y, z, o_psolid) {
- x+=xvel;
- }
- else {
- while (!place_meeting_ext(x+sign(xvel),y, z, o_psolid)) {
- x+=sign(xvel);
- }
- xvel=0;
- }
- //Y
- if !place_meeting_ext(x,y+yvel, z, o_psolid) {
- y+=yvel;
- }
- else {
- while (!place_meeting_ext(x,y+sign(yvel), z, o_psolid)) {
- y+=sign(yvel);
- }
- yvel=0;
- }
- //Z
- if !place_meeting_ext(x,y, z+zvel, o_psolid) {
- z+=zvel;
- }
- else {
- while (!place_meeting_ext(x,y, z+sign(zvel), o_psolid)) {
- z+=sign(zvel);
- }
- zvel=0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement