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 - king195

46
Preguntas y respuestas / Re:Instancias de objeto
Abril 23, 2015, 01:06:17 PM
Ya lo he solucionado, he estado un buen rato pero al fin he encontrado la solución simple y sencilla.

alert = instance_create(xx+1,yy+1,obj_alert);
                            with(alert){
                                alerta = aux_casillas[i,j];
                            }


Como podéis observar le asigno como dice en el Manual de Game Maker con una variable el id de la instancia del objeto que se acaba de crear, y a esa ID le doy el valor que tiene ahí mismo el array, diciendole con el with que sea el valor de la variable, es decir el ID del objeto directamente.

Como curiosidad Obj_alert.id no sirve, he tenido que llevarlo a una variable a parte y después meterlo en el with para que hiciera efecto desde el script.
47
Preguntas y respuestas / Re:Instancias de objeto
Abril 23, 2015, 12:59:54 PM
Cita de: penumbra en Abril 23, 2015, 02:02:54 AM
Si quieres saber por qué pasa, es tan fácil como usar el debugger.

Una suposición es que si todas las instancias se quedan a 1, entonces, según el código, aunque el arreglo que r ecorres contenga distintos valores, en la última iteración del ciclo, la condición que se valida es la primera y por eso TODAS las instancias de el objeto alert se quedan en 1

Suponiendo que los ciclos se ejecuten 10 veces. Si te fijas en la lógica del código, no importa lo que suceda en las iteraciones anteriores, porque el valor de la variable alerta al final dependerá solo de la última iteración y del último valor de i y j, que apuntan a esa casilla "final" del arreglo. Así que con la lógica que usas, el valor de todas las variables alerta siempre va a ser el mismo.

Cita de: king195 en Abril 22, 2015, 11:50:17 PM
con un bucle For recorro unas casillas que contienen unos números y los números de ese array los necesito pasar a una variable
No tiene mucho sentido hacer iteraciones que al final no van a contar. No alcanzo a ver por qué quieres recorrer un arreglo si al final, sólo un valor de ese arreglo se va a volcar a UNA SOLA variable individual, y ese valor siempre va a ser el último valor del arreglo (según el máximo valor que i y j puedan tener). Sería más rápido indicar directamente qué posición del arreglo se guarda en la variable alerta.

Usar with (objeto) provocará que el valor sea siempre el mismo para todas las instancias.

Obviamente lo que ves de código son apenas pocas lineas del total del script. Y es que para la solución de esto no hace falta ver todo el código, estoy 100% seguro de que aux_casillas[i,j] contiene el valor que le quiero pasar a Alerta. El único problema es pasarle el valor de aux_casillas a alerta en cada distinta instancia.
48
Preguntas y respuestas / Instancias de objeto
Abril 22, 2015, 11:50:17 PM
Tengo un Script donde con un bucle For recorro unas casillas que contienen unos números y los números de ese array los necesito pasar a una variable que tengo en el objeto Alert(en un create event inicializado a 0) que se acaba de crear. El tema es que se queda siempre a 1 todas las instancias de obj_alert. Qué debería de hacer para que fuera para cada uno diferente, o si tenéis una forma mejor de resolverlo.

Script
instance_create(xx+1,yy+1,obj_alert);
                        if(aux_casillas[i,j] == 1){
                            with(obj_alert){
                                alerta = 1;
                            }
                        }
                       
                        if(aux_casillas[i,j] == 2){
                            with(obj_alert){
                                alerta = 2;
                            }
                        }
                       if(aux_casillas[i,j] == 3){
                            with(obj_alert){
                                alerta = 3;
                            }
                        }
49
Preguntas y respuestas / Re:Movimiento repetitivo?
Abril 22, 2015, 03:22:44 PM
Cita de: 3dgeminis en Abril 22, 2015, 08:52:39 AM
Lo siento, fue mi error, cambia dd por velocidad

Sí, me di cuenta. No pasa nada, igual ya fui haciendo cositas con el ystart y me quedo bien. Cuando acabe el juego a ver si lo presento por aquí.
50
Preguntas y respuestas / Re:Movimiento repetitivo?
Abril 21, 2015, 02:16:33 PM
Cita de: 3dgeminis en Abril 21, 2015, 07:47:32 AM
Una forma de hacerlo es la siguiente:

EVENTO CREATE
velocidad=1
yy=ystart


EVENTO STEP
if y>yy+20 {velocidad=-1}
if y<yy {velocidad=1}
y+=dd


Le puse 20 porque con 5 no se nota mucho(5 pixels es muy poco)

Que es dd si ni si quiera lo llamas como variable. Me quedare unicamente con el ystart que era lo que andaba buscando, gracias de todas formas.
51
Preguntas y respuestas / Movimiento repetitivo?
Abril 20, 2015, 02:08:37 PM
Cómo podría hacer que un personaje se moviese automáticamente hacia arriba y hacia abajo de forma repetitiva sin paths.

Es decir que cuando el personaje se haya movido 5 pixeles hacia arriba vaya hacia abajo otros 5 pixeles y luego vuelva a subir, y así continuamente imaginando que hay varios personajes que pertenecen al mismo objeto.
52
Con esto puedes hacer aparecer texto, recuerda hacer que image_alpha empiece siendo 0 en el Create.

if(image_alpha <= 1){
     image_alpha += 0.01;
}


Para lo de que desvaneciese de nuevo cuando pasen 5 segundos usa un alarm
53
Encontré el error, bastante estúpido por cierto.

El fallo no se produce en C pero en Game Maker si, lo que sucede es que la pregunta del

j-1>=0

La tengo que realizar antes del

casillas[i+1,j-1]

Por que sino lo primero que hará sera hacer el casillas[i+1,j-1] y en cuanto le dé el indice negativo saldrá automáticamente con el error, ni si quiera se fijará en el AND que hay después.



@Clamud

Efectivamente, pero el error se produce por lo que dije antes, que justo estaba escribiéndolo cuando lo pusiste tu  :D
54
Estoy haciendo una especie de buscaminas y para ello utilizo arrays y me voy moviendo por posiciones del array el tema es el siguiente y es que me esta apareciendo un error bastante cojonero, el codigo lo hice primero en C y funciona perfectamente pero cuando lo quiero pasar a Game Maker me ha salido un error

Array index must be +'ve
at gml_Script_scr_create_random_level (line 50) -             if(casillas[i-1,j+1]==1 && (i-1>=0 && j+1<tam)){



  for(i=0;i<tam;i++){
    for(j=0;j<tam;j++){
        aux_casillas[i,j]=0;
        if(casillas[i,j]==0){
            if(casillas[i+1,j+1]==1 && (j+1<tam && i+1<tam)){
                aux_casillas[i,j]++;
            }
            if(casillas[i-1,j+1]==1 && (i-1>=0 && j+1<tam)){
                aux_casillas[i,j]++;
            }
    }
}


No es el código entero obviamente, es únicamente en la zona donde salta el error, a qué se puede deber?

Tal y como se puede ver lo que hago es fijarme si en la posición que rodea a la posición que estoy investigando es igual a 1, pues suma un auxiliar que tengo por ahí.
55
Preguntas y respuestas / Re:Ayuda Con juego WEB
Abril 19, 2015, 01:01:47 PM
Cita de: mainor99 en Abril 18, 2015, 03:26:14 AM
Buenas, Estoy creando un vídeo juego para montarlo en mi pagina web (dicha pagina creada con asp.net), mi problema consiste en que necesito comunicar mi pagina con el juego y/o viceversa ejemplo: Yo ocupo en la pagina pedirle al usuario el tamaño del tablero luego comunicarle eso al juego para que este inicie con ese tamaño de tablero, justamente esa comunicación es la que no puedo realizar(como se comunica Game Maker con el entorno) cualquier ayuda seria genial .

Aclaraciones:
- yo exporto el juego a html5 esta exportación produce un código en javascript, yo se que se podría modificar las variables en javascript para generar dicha comunicación, pero al exportar game maker no respeta el nombre de variables y lo produce todo de nuevo, habrá alguna manera de saber que parte es cada cosa?

Y por que no preguntarle eso en el propio juego? Te sacas de complicaciones. Hay diversas formas para darle información a Game Maker y que lo almacene en una variable.
56
Cita de: Clamud en Abril 18, 2015, 03:13:14 PM
Lo primero que necesitas es una rapidez angular para indicar qué tan rápido debe ajustarse a los cambios de ángulo
[gml]ra = 5; //rapidez angular[/gml]
Después se necesita saber la diferencia entre el ángulo actual y el ángulo final, pero esa diferencia debe estar en el intervalo (-180,180] para no hacer giros más largos de lo necesario. Ese valor se obtiene así
[gml]
pd = point_direction( mouse_x,mouse_y, obj_player.x,obj_player.y )
da = angle_difference( image_angle, pd  ); //diferencia de ángulo
[/gml]
Ahora conociendo el signo de la diferencia de ángulos sabemos si se debe restar o sumar la rapidez ángular, pero se debe hacer sólo cuando la diferencia de ángulo es un intervalo más pequeño que la rapidez angular
[gml]
if( da < -ra ) //caso negativo
    image_angle -= ra;
else image_angle -= da;
if( da > ra ) //caso positivo
    image_angle += ra;
else image_angle += da;
[/gml]

En el manual, en la descripción de la función angle_difference, aparece el mismo algoritmo pero reducido
[gml]
var pd = point_direction(x, y, mouse_x, mouse_y);
var dd = angle_difference(image_angle, pd);
image_angle += min(abs(dd), 10) * sign(dd);
[/gml]
ahí el número 10 es la rapidez angular.

Gracias, la función angle_difference es lo que estaba buscando ya que sin eso nunca iba a funcionar correctamente el sumar o restar angulos ya que sólo podría hacer una de dos.
57
Cita de: penumbra en Abril 17, 2015, 07:43:27 PM
Cita de: king195 en Abril 17, 2015, 07:01:01 PM
Cómo podría conseguir un efecto de deslizamiento de la imagen del personaje hasta el punto a dirigirse?
Te dejo un enunciado que podría darte una pista

"Si el ángulo del sprite del personaje es distinto al ángulo personaje-puntero"
{
     "sumar (o restar) un grado (o un valor pequeño) al ángulo del personaje"
}

Si, hasta el no es igual image_angle al point_direction que he especificado antes llego.
Para poner la sintaxis de suma o resta de los grados es lo que no tengo claro(es decir la acción a ejecutar)
58
El siguiente código que uso es para mover el angulo de la imagen de mi personaje hasta que mire a la posición del ratón, pero es demasiado rápido el giro a veces, ya que puede mirar de una punta a otra de forma muy rápida.

image_angle = point_direction(mouse_x,mouse_y,obj_player.x,obj_player.y);

Cómo podría conseguir un efecto de deslizamiento de la imagen del personaje hasta el punto a dirigirse?

Es decir si el mouse esta en una zona que la imagen del personaje vaya girandose lentamente hasta estar dirigiendose al angulo del mouse.
59
Preguntas y respuestas / Dividir estructura jugador?
Abril 15, 2015, 04:45:39 PM
En Unity y en otras aplicaciones de creación de videojuegos se puede dividir al personaje en varias partes del cuerpo y juntarlo de forma que se mueva todo al unisono y simultáneamente. En Game Maker como se pueden hacer dichos esqueletos? Para más adelante poder construir enemigos a los cuales si les atacas en una zona del cuerpo le puedes llegar a quitar más vida que si le das a otra.
60
Buenas, estoy intentando hacer que al crearse la instancia de la bala por que he presionado el Mouse se cree encima de la pistola del personaje. El tema es que lo estoy haciendo con una vista vertical y al girar al personaje con Image_angle la bala se descuadra totalmente.

Cómo podría hacer que recalculase la posición donde se tiene que crear la bala dependiendo del angulo del personaje?