Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Selkie

1
Primero, te recomiendo que cargues la imagen usando la funci?n 'Add from strip' (Ctrl+P en el editor de sprites). As? tendr?s todos los sprites individuales ^^
Despu?s, crea sprites con cada animaci?n, para las 8 direcciones, si tu juego va a usar 4 teclas para mover al personaje, comprueba que haya dos teclas pulsadas a la vez y en tal caso asignas la velocidad y el sprite correspondiente.

Por ?ltimo, ya que no tengo mcho tiempo, te aconsejo que no pongas para los movimientos diagonales la hspeed normal y la vspeed normal a la vez, ya que dar? la sensaci?n de que se mueve muy r?pido. Para un movimiento realista deber?a ser 0'7 por la speed que pongas, tanto la hspeed como la vspeed. Esto no me lo invento, se saca de trigonometr?a y del ?ngulo de 45? :P

Saludos y mucha suerte
2
Hace mucho que no tocaba Game Maker, y hoy he decidido intentar hacer una especie de MSPaint, por mero entretenimiento, con GM8.0 Pro.
Lo he estado haciendo con una surface, en la que voy dibujando los p?xeles de otro color, y luego la dibujo en pantalla, sin embargo no aparece m?s que el ?ltimo p?xel dibujado, es como si a cada step se reiniciase.
La cuesti?n es, ?c?mo hacer que se muestre todo lo dibujado y no s?lo el ?ltimo p?xel?
Dejo adjunto el editable de lo que llevo hecho, espero que alguien pueda ayudarme :)

Muchas gracias por adelantado ^^

3
Preguntas y respuestas / Re: Detener acci?n
Febrero 12, 2011, 11:27:53 PM
Cita de: Masterkey en Febrero 12, 2011, 11:20:50 PM
Mi duda es, tengo en el evento step un c?digo: if arma=1{instance_create(x,y,arm_ene1)} y lo que pasa es que como est? en step se repite la acci?n muchas veces. ?como puedo hacer para que despu?s de que se crea el objeto se detenga la acci?n?
Quiz?s te sirva simplemente con un booleano:
Create:
[gml]creado=0[/gml]

Step:
[gml]if arma=1 && creado=0{instance_create(x,y,arm_ene1); creado=1}[/gml]

Cuando quieras que se pueda volver a crear, pones creado=0.

?Saludos!
4
?Tipo Atari? ?Quieres decir 8-bits?

Yo para hacer midis utilizo Anvil Studio, de todas formas el programa es irrelevante, si no me equivoco: simplemente utiliza los instrumentos 8-bits, que est?n entre los 128 instrumentos midi. Por ejemplo, el Lead 1 - Square (as? se llama en Anvil Studio), que es b?sicamente una onda square (cuadrada) t?pica de los 8 bits.

Saludos!
5
Preguntas y respuestas / Re: Rooms al azar
Febrero 09, 2011, 04:44:45 PM
Cita de: ErikAdams en Febrero 08, 2011, 04:28:58 PM
?Gracias por tu r?pida respuesta!

Aun no voy a probarlo por que ya te digo que de momento es una idea, pero el ver que si es posible (Tu ejemplo lo veo factible), me voy a poner a idear el gameplay del juego (Si hasta planifico mis juegos y todo XD). Pero ya te digo que en principio me hago una idea de hacia donde dar los tiros (A mi se me ocurr?a una manera, pero era un c?digo enorme y me daba miedo afrontarlo XD).

?Gracias de nuevo!

?Nos vemos!

De nada ^^ El principal problema que veo es que, cuando quede s?lo una room por decidir, tendr?a una posibilidad entre x (n?mero de rooms) de acertar en el random en la room libre, por tanto si hubiese muchas rooms podr?a ralentizarse un pel?n. De todas maneras, creo que ser?a un instante, a lo mejor ni se nota.

Saludos!
6
Preguntas y respuestas / Re: Rooms al azar
Febrero 08, 2011, 04:14:01 PM
Cita de: ErikAdams en Febrero 08, 2011, 03:30:47 PM
Buenas compa?eros!

Estoy rumiando una idea, y me gustar?a que me ayudarais con vuestros conocimientos a llevarla a cabo.

Imaginar que tengo un "engine" con un mont?n de rooms diferentes (10, 50, 100 o mas), y que cada room tiene unos objetos que al pincharlos con el rat?n, eligen en ese momento una room al azar y te transportan a ella (tiene que ser as? por que las rooms son permanentes y quiero que una vez que ha seleccionado la room, si se vuelve a ella siempre te lleve a la misma room).

?Sab?is de alguna manera de hacer que las rooms elegidas no se repitan?

A ver si hay suerte y me pod?is ayudar :)

?Gracias de antemano!

Se puede hacer una array global de x t?rminos, siendo x el n?mero de rooms.
Todos los t?rminos empiezan siendo 0, y cuando se seleccionan, se vuelven 1. De modo que la selecci?n de room coge un n?mero al azar, y si esa posici?n no est? activada en la array, se lo queda. Si est? activada, vuelve a elegir.

No s? si ser?a lo m?s eficiente, la verdad, pero creo que funcionar?a.
En un game start, siendo x el n?mero de rooms:
[gml]i = 0
while (i < x){global.roomlist = 0; i+=1}[/gml]

Luego, la selecci?n de room destino se podr?a llevar a cabo en el evento create del objeto, ?no? Creo que funcionar?a as?:
[gml]destino = random(x);
while (global.roomlist[destino] = 0){
destino = random(x);}
global.roomlist[destino] = 1[/gml]

Lo dem?s ya no tiene dificultad. De todas maneras, es muy probable que no est? bien alguna parte del c?digo, porque son funciones que no suelo usar y que no manejo demasiado bien T.T

A ver si funciona, ?suerte!



7
Preguntas y respuestas / Re: rompecabeza
Febrero 08, 2011, 03:37:30 PM
Cita de: Munguia en Febrero 08, 2011, 06:14:52 AM
no estoy usando ning?n c?digo, solo eventos y acciones preestablecidos del drag and drop

gracias

Yo ten?a bastantes problemas cuando usaba ?nicamente drag & drop, que se me solucionaban simplemente pasando a GML las acciones.
Puedes probar a hacerlo en GML, pero no te puedo dar ayuda m?s concreta por ahora :(

Suerte
8
Cita de: p34 en Febrero 07, 2011, 10:43:52 PM
por ejemplo tengo la variable arma = "Escopeta"
si quiero hacer que al presionar "Enter" agarre otra arma menos la escopeta (porque ya tienes una) como le hago con la condicion?

pensaba que era:

if arma not= "Escopeta"
{
bla; bla:
}

pero me lo marca como error

Gracias

if variable != value{action}

Tambi?n te vale para las funciones: "if !collision_point(...)", por ejemplo
9
Cita de: Wadk en Febrero 07, 2011, 03:51:45 AM
Es bien f?cil:
...
Eso deber?a servir.

?S?! Parece que sirve, ?muchas gracias! ^^
10
?Servir?a con collision_rectangle, con x1 = 0, x2 = room_width, y1 = y, y2 = y+sprite_height? Para detectar si hay alguna instancia de zombie en la propia y de la planta.

No he entendido del todo bien lo que necesitas, pero me parece que eso dar?a resultado (de todas maneras, habr?a que pensar tambi?n en los muros que pueda haber por medio, ?no?)
11
Preguntas y respuestas / Re: sprite transparente?=????
Febrero 06, 2011, 10:11:39 PM
Si usas GM8, el sistema de sprites ha cambiado, ahora los sprites tienen canal alpha, es decir, admiten transparencia.

Puede que me equivoque, pero ya no hay manera de hacerlo como en GM7 y anteriores.
Como tip, no hace falta que borres el fondo p?xel a p?xel, puedes usar el cubo de pintura con opacidad 0 y modo Replace, de modo que el trozo que clickes se volver? transparente. Estas opciones aparecen en la parte inferior derecha del editor de sprites.

Saludos!
12
Preguntas y respuestas / Re: Adherir objeto a otro
Febrero 06, 2011, 08:55:20 PM
?Lo que buscas es que se mueva junto al objeto?
Puedes hacer una variable. En create (del objeto que se pegue) la defines:
pegado = 0

En el evento de pulsar tecla/press key (en el objeto que se pegue, de nuevo):
if collision_rectangle(x,y,x+sprite_width,y+sprite_height,objeto_personaje,0,0){
pegado = 1}

En el evento de soltar tecla/release key:
pegado = 0

Con eso tenemos una variable que indica si lo estamos cogiendo o no. Al soltar la tecla, se suelta.

Ahora hay que poner lo que se har? si la variable est? activada, es decir, si est? cogido. Podemos declarar, previamente, estas variables en Create:
x_relativa = x-objeto_personaje.x
y_relativa = y-objeto_personaje.y

En Step las actualizamos si el objeto no est? pegado, y si est? pegado, cambiamos las coordenadas:
if pegado = 0{
x_relativa = x-objeto_personaje.x
y_relativa = y-objeto_personaje.y}
if pegado = 1{
x = objeto_personaje.x + x_relativa
y = objeto_personaje.y + y_relativa}

Como no me he explicado bien, lo he aplicado en una demo, pero no tengo tiempo ahora mismo de comentar el c?digo, puede que lo haga m?s tarde.

Saludos y espero que te sirva!


P.D: La diferencia entre este y el del post de arriba es que este deja pegado el objeto en la posici?n relativa en la que lo coge.
P.D2: Tambi?n he interpretado que han de estar juntos para poder pegarse
13
?Hola! La verdad es que no suelo pedir ayuda, pero este tema me est? llegando a desquiciar, pese a parecerme muy sencillo en principio.

La situaci?n es: En mi juego shooter/plataformas, he creado unas "vallas" verticales para formar zonas seguras: el personaje puede atravesarlas, pero no los enemigos ni los disparos (si quieres matarlos, tienes que entrar).

Los enemigos tienen un movimiento muy sencillo: un booleano dir que indica si se mueve a izquierda (0) o derecha (1) y una variable velocidad que marca el valor absoluto de la hspeed.
Adem?s, salta cada 100 frames.

Para el movimiento, tengo este c?digo en Step:
[gml]if dir = 0{//izquierda
sprite_index = sprite_izquierda
if place_free(x-velocidad,y) && !collision_point(x-velocidad,y+vspeed,Reja_vert,0,0){hspeed=-velocidad}
else{dir = 1}}

if dir = 1{//derecha
sprite_index = sprite_derecha
if place_free(x+velocidad,y) && !collision_point(x+sprite_width+velocidad,y+vspeed,objeto_valla,0,0){hspeed=velocidad}
else{dir = 0}}[/gml]
Es decir, seg?n la variable de direcci?n, comprueba colisi?n con objetos s?lidos y con la valla (que no es s?lida, claro), y si en ambos casos no hay colisi?n, asigna la hspeed correspondiente. Si hay alguna colisi?n, se cambia la variable dir (el enemigo se girar?a para ir al otro lado).

El problema es que este c?digo no me funciona siempre, ya que a veces los enemigos traspasan las vallas.
Lo que he probado ha sido cambiar el argumento de la y en collision_point, pero tanto y como y+vspeed fallan (en ocasiones distintas, no s? exactamente cu?ndo), y el enemigo puede pasar ocasionalmente.

La otra soluci?n que se me ocurri? para hacer las vallas fue algo as? como "solidez selectiva", pero no s? si es posible hacer que un objeto sea s?lido ?nicamente para otros objetos determinados (en este caso, para los enemigos y los disparos).

Si lo veis necesario, puedo subir una demo del problema, ya que no s? determinar bien en qu? momentos falla.

Muchas gracias, un saludo!
14
Est? genial, creo que nunca hab?a visto un sistema de batallas as? en Game Maker  :o

Cuando yo era un poco m?s activo por aqu? hab?a otro proyecto de este tipo, y lo cierto es que ahora se ve mucho mejor ^^

?Saludos!
15
Desarrollo de Scripts / Cron?metro y cuenta atr?s
Enero 08, 2011, 04:21:57 PM
Cron?metro y cuenta atr?s

  • Autor: Selkie
  • Descripci?n: Con algunos scripts, permite mostrar una cantidad de frames en minutos y segundos, pausarla y reiniciarla; as? como una cuenta atr?s usando una alarma.
  • Creado en GM8  :GM8:

El script principal es el time_calc(frames,fps), que transforma una cantidad de frames, en tiempo del formato minutos:segundos:cent?simas.
[gml]//argument0 = variable de frames
//argument1 = frames por segundo( > fps = < velocidad)
//
//Hacer coincidir las fps del script con las de la room para tiempo real
//
//m = minutos ; s = segundos ; d = d?cimas de segundo

m = argument0/(60*argument1)
m = floor(m)
s = (argument0 - m * 60*argument1)/argument1
if s < 0.01 {d = "0.00"}
if s!= 0{d = frac(s)}
s = floor(s)

if s < 10{s = "0"+string(s)}

time = string(m)+":"+string(s)+":"+string_char_at(string(d),3)+string_char_at(string(d),4)[/gml]

En argument0 pondremos la variable que contenga las frames, y en argument1 las fps de la room (doblando este argumento, hacemos que la cuenta sea el doble de lenta, mientras que si ponemos la mitad, ser? el doble de r?pida).
Por ejemplo, 2440 frames a 40fps ser?n 1:01:00 (Un minuto y un segundo).

Si usamos la funci?n de cron?metro, puede que nos interese pausarlo y reiniciarlo, para eso usamos dos peque?os scripts, cron_start() y cron_reset(frames,run)
cron_start:
[gml]//Pausa y reanuda el cron?metro
switch global.cron{
case 0: global.cron = 1; break;
case 1: global.cron = 0; break;}[/gml]

cron_reset:
[gml]//argument0 = frames con las que aparecer?
//argument1 >> 0 = en pausa; 1 = en movimiento
frames = argument0
global.cron = argument1[/gml]

Esto son todos los scripts, el resto del c?digo est? en el cuerpo del objeto, completo en la demo adjunta.

?Saludos!