Shooter Zombi(TDS) #1 Movimiento, vista y disparo
En ésta primera parte del curso Shoter Zombi (TDS) nos ocuparemos del movimiento del jugador, su vista dirigida hacia el mouse y el disparo. El tutorial será realizado con la versión GMS 1.4+, pero funciona con cualquier versión a partir de Game Maker Pro 8.1, no funciona en la versión lite y no ha sido probado en versiones más antiguas de Game Maker, pero puede funcionar igualmente.
Recursos Nescesarios
-Sprite del jugador
-Sprite de la colisión del jugador(Circular)
-Sprite de la bala
-Sprite de un objeto(Caja en el tutorial)
-Scripts de movimiento
La descarga de los mismos se encuentra aquí debajo, y la contraseña para descomprimir el ".rar" es "http://desarrollocreativo.weebly.com/"
|
|
|
Nota
Los nombres de los recursos son colocados entre comillas, y no es necesario utilizar los mismos siempre y cuando lo tengan en consideración a la hora de escribir el código.
Tutorial
Sprites
Para comenzar primero crearemos un nuevo proyecto, dentro del mismo crearemos un sprite "spr_jugador_1", de origen x=16 y=32, un sprite "spr_bala_1", de origen x=-39 y=-6, otro sprite "spr_caja_1" con origen x=0 y=0 y por último uno llamado "spr_colision_1" que debe estar centrado y con la casilla "Precise collision checking" marcada.
Debe utilizar éstos orígenes para los sprites que nosotros les otorgamos, en caso de utilizar otros los orígenes deberán establecerlos dependiendo de los mismos.
Debe utilizar éstos orígenes para los sprites que nosotros les otorgamos, en caso de utilizar otros los orígenes deberán establecerlos dependiendo de los mismos.
|
|
Obj_jugador
Una vez hecho esto crearemos un objeto llamado "obj_jugador", cuyas propiedades deben ser visible y sólido. A éste deberemos cambiarle la máscara de colisión por el del sprite "spr_colision_1", lo podemos hacer mediante las propiedades del objeto o colocando el siguiente código en el evento Create.
/////Create
mask_index=spr_colision_1
Dentro del mismo añadiremos un evento Step o Paso, y en él, un bloque de código con la siguiente escritura:
/////Step
rot=point_direction(x,y,mouse_x,mouse_y)
scr_wasd_move(8)
scr_flechas_move(8)
Ésto lo que hará será establecer una variable (rot) que contendrá el ángulo existente entra la posición del jugador y la del mouse, luego colocamos uno de los scripts de movimiento(o ambos), con una velocidad de 8.
En Game Maker, el ángulo que se utiliza como para la rotación de un sprite es el ángulo 0º, por éste motivo es que las imágenes deben estar mirando hacia la derecha.
Nota: esto también podría hacerse modificando el image_angle, pero a veces tendrás problemas con las colisiones, por eso decidí explicarlo de ésta manera.
En Game Maker, el ángulo que se utiliza como para la rotación de un sprite es el ángulo 0º, por éste motivo es que las imágenes deben estar mirando hacia la derecha.
Nota: esto también podría hacerse modificando el image_angle, pero a veces tendrás problemas con las colisiones, por eso decidí explicarlo de ésta manera.
A continuación añadiremos un evento Draw, y en él, un bloque de código con la siguiente escritura:
/////Draw
draw_sprite(mask_index,0,x,y)
draw_sprite_ext(sprite_index,image_index,x,y,1,1,rot,c_white,1)
Éste código dibujará dos cosas, primero la sprite de la máscara de colision, simplemente para que revisen que esté ubicada correcramente, pueden borrarlo luego, y después dibuja el sprite del jugador, en sus posciciones de x e y, con el ángulo establecido(rot), el color "c_white" para que no haga cambios en el color del sprite y un alpha de 1, es decir completamente visible.
Obj_caja
Ahora crearemos un nuevo objeto llamado "obj_caja", al que le aplicaremos las propiedades de visible y sólido y le asignamos el sprite "spr_caja_1" simplemente.
Obj_bala_1
Nuevamente añadiremos otro objeto, el "obj_bala_1" con el siguiente código en el evento Create:
/////Create
image_angle=point_direction(x,y,mouse_x,mouse_y)
move_towards_point(mouse_x,mouse_y,15)
De ésta manera la "obj_bala_1" se creará en dirección al mouse, y se dirigirá a éste a una velocidad de 15.
Luego, en el evento de colisión con el "obj_caja" colocamos lo siguiente para que la bala se destruya:
Luego, en el evento de colisión con el "obj_caja" colocamos lo siguiente para que la bala se destruya:
/////Colision
instance_destroy()
Obj_jugador
Para finalizar volvemos al "obj_jugador" y le agregamos la siguiente linea en el evento Step:
if mouse_check_button_pressed(mb_left){instance_create(x,y,obj_bala_1)}
A partir de éste momento cuando hagas click se creará una bala, que, por lo establecido antes, saldrá en dirección del mouse.
Ahora en el evento de colisión con el "obj_caja" colocamos éste código:
/////Colision
hspeed=0
vspeed=0
Preparando el Room
Lo siguiente es colocar todo ésto en un nuevo Room, pon a tu jugador a disparar contra algunas cajas.
Felicitaciones
Hasta aquí llega la primera parte de éste tutorial, nos vemos en la próxima...