Hola.
Me podrían decir como crear un joystick para un juego de disparos en 2d, ya e intentado varias cosas pero no logro hacerlo.
Es que quiero poner un joystick en la esquina inferior que al presionarlo el jugador de mueva a la dirección y mire hacia ese lado, no quiero que tenga solo la posibilidad de moverse en 4 direcciones sino en todas las posibles y también un botón que al presionarlo dispare a la dirección de la vista del jugador. Espero haberme expresado bien :)
gracias por tu respuesta.
Amigo, es muy sencillo, solo creas unos objetos (el de moverse, el de disparar y un controlador):
oButtonMove = El joystick de movimiento
oButtonShoot = El boton de disparar
oMultiTouch = El Controlador
(Los nombres son los que quieras)
en el oMultiTouch colocas un evento Step y escribes esto:
Step Event:
for(i=0;i<5;i+=1)
{
if device_mouse_check_button_pressed(i,mb_left)
{
if device_mouse_x(i)<(room_width/2) //Espacio Disponible para activar el Joystick de movimiento
{
oButtonMove.dragg=1;
oButtonMove.dragg_id=i;
}
else //El sector disponible para activar el Joystick de disparo
{
oButtonShoot.dragg=1;
oButtonShoot.dragg_id=i;
}
}
}
Ahora vamos con los Controles
En ambos objetos (oButtonMove & oButtonShoot) crearemos un objeto create con estas variables:
dragg=0//Esta Activado?
dragg_id=0 //id del dedo que lo activa
pero en el evento Create del objeto oButtonMove agregaremos otra variable mas:
global.Dir = 0
que significa la direccion que el oPlayer toma de acuerdo a la direccion que tenga el joystick
¡¡RECUERDA QUE DEBES TENER LOS SPRITES DEL JOYSTICK Y EL BOTON DE DISPARO, pueden ser un circulo grande para el oButtonMove y uno pequeño para el oButtonShoot ;D
sigamos...
En el evento Step de oButtonMove ponemos
if dragg=1
{
direction = point_direction(x,y,device_mouse_x(dragg_id),device_mouse_y(dragg_id))
global.Dir = direction
with oPlayer
{
direction = global.Dir
image_angle = direction
speed = 4 //Speed
}
}
if dragg=1 && device_mouse_check_button_released(dragg_id,mb_left)
{
dragg=0
dragg_id=0
speed = 0
}
y en el oButtonShoot en el evento Step:
if dragg=1
{
with oPlayer
{
instance_create(x,y,oBullet)
with oBullet
{
direction = global.Dir
image_angle = direction
speed = 18
}
}
}
if dragg=1 && device_mouse_check_button_released(dragg_id,mb_left)
{
dragg=0
dragg_id=0
}
y los pones dentro del area tactil de cada uno (En este caso: oButtonMove va entra la primera mitad de la room y oButtonShoot en la otra)
te aclaro que oPlayer y oBullet representan al jugador y a la bala
dudas o inquietudes aqui: http://niuweb.hol.es
Lo voy a intentar luego te digo si funciono. Gracias por responder :)
Hola he cambiado el código un poco para mis necesidades pero la cosa es que cuando muevo el joystick de mover y lo suelto el jugador camina solo aun que yo no lo este tocando
Este es el código que utilizo en el de mover.
if dragg=1
{
direction = point_direction(x,y,device_mouse_x(dragg_id),device_mouse_y(dragg_id))
global.dir = direction
with obj_jugador
{
direction = global.dir
speed = 5 //Speed
}
}
if dragg=1 && device_mouse_check_button_released(dragg_id,mb_left)
{
dragg=0
dragg_id=0
speed = 0
}
Aclaro que cuando tu me pasaste el código lo deje tal y como estaba pero aun tenia el problema.
Espero tu respuesta. Gracias.
A ya lo solucione. :o
Pero cuando presiono el joystickshoot me dispara una hilera de balas como le hago, el código que utiliso en el evento step es este, el del evento créate es el mismo.
if dragg=1
{
var direction2;
direction2 = point_direction(x,y,device_mouse_x(dragg_id),device_mouse_y(dragg_id))
global.dir2 = direction2
with obj_jugador
{
instance_create(x,y,obj_bala)
image_angle = global.dir2
}
}
if dragg=1 && device_mouse_check_button_released(dragg_id,mb_left)
{
dragg=0
dragg_id=0
}