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

316
Bueno, básicamente lo que hice fue usar funciones trigonométricas para recrear el recuadro correspondiente a un diente de engranaje. Así calculé 4 puntos de los cuales uní con lineas para verificar de qué lado golpea al player. Cada collision_line corresponde a una cara exterior.

Luego simplemente hice que al chocar se calculara el centro de dicho diente de engranaje y lo moví en la dirección contraria.

El ejemplo adjunto está incompleto, solo funciona para el que esta coloreado en verde. Solo faltaría agregar las verificaciones para los otros 2 lados exteriores y mejorar un poco la colision, puesto que el objeto con el que colisiona sale disparado en vez de ser movido de acuerdo a la velocidad del engranaje. Pero eso supongo que se puede solucionar.

Suerte! :)
317
Sé hacer plataformas móviles, pero la verdad no sabría como hacer para aplicar eso para formas irregulares como un engranaje.  :-[ Y cómo es que podría hacer para que empuje a mi personaje...


Edit: Eh logrado solucionarlo usando collision_line, gracias por el apoyo! :D
318
Dejo un gráfico explicativo (perdón por mi mal dibujo, espero que se entienda) :-[

Quisiera saber cómo podría hacer para que mi personaje sea empujado por el movimiento de mi engranaje, el cual gira en dirección antihorario (u horario). En el gráfico gira antihoriario, vease la flecha roja grande.
¿Es posible hacer que mientras se va moviendo el engranaje, este vaya empujando a mi personaje, estando allí parado solamente?

Espero puedan ayudarme :)
319
La diferencia es que si haces esto:
[GML]
var vida;
vida = 100;
[/GML]

dentro de un evento cualquiera (ya sea draw, step, o el que se te ocurra), la variable vida solo será reconocida dentro de dicho evento, y si quieres verificarla o usarla en otro, te dará un error.

Sin embargo, usar
[GML]
vida = 100;
[/GML]

hará que sea reconocida por todos los eventos dentro del objeto en donde fue declarada. Pero, solo puede usarse , esta forma de declarar variables, en el evento Create.
320
Preguntas y respuestas / Re:Ajustar al grid con GML
Diciembre 28, 2013, 05:43:30 PM
Una forma robusta de hacer que el personaje se alinee cuando deje de moverse sería poniendo en el evento Step:
[gml]
if keyboard_check(vk_left) then x-=4;
if keyboard_check(vk_right) then x+=4;
if keyboard_check(vk_up) then y-=4;
if keyboard_check(vk_down) then y+=4;

if ((!keyboard_check(vk_left))
&& (!keyboard_check(vk_right))
&& (!keyboard_check(vk_down))
&& (!keyboard_check(vk_up)))
{
    if (!place_snapped(32,32)) // Aqui verifica, "Sí no está alineado" en la grid de 32x32
        move_snap(32,32); //entonces lo alineamos a la grid de 32x32
}[/gml]

321
Cita de: p34 en Diciembre 17, 2013, 09:38:10 PM
...
Igual con código desde step puedes usar las funciones keyboard_check_pressed(key), keyboard_check_released(key) & keyboard_ckek(key). Están en el mismo orden en que te explique los eventos.
Para "key" puedes poner vk_"tecla a presionar" en caso de no ser una letra o para estas se usa ord(letra).
...

Básicamente no funciona porque te olvidaste de colocar el "vk_", en todo caso vk_left, vk_right.
Entonces para verificar la flecha izquierda:

keyboard_check(vk_left);

Otras constantes de teclado: http://www.comunidadgm.org/manual_GM/El_teclado.htm
322
Efectivamente, puede usarse if en un draw, como así también cualquier sentencia de control o ciclos.

Revisa el valor de nivel1 dentro de obj_Nivel.
323
Preguntas y respuestas / Re:para que sirve collision_line
Diciembre 05, 2013, 06:18:13 PM
Lamento decirte que estas equivocado.
Te dejo una cita del manual que indica perfectamente su uso :)
Citar
collision_line(x1,y1,x2,y2,obj,prec,notme) Comprueba si hay una colisión  entre la línea que va de (x1,y1) a (x2,y2) e instancias del objeto obj. Esta función es muy poderosa. Puedes usarla para comprobar si una instancia puede ver a otra chequeando si entre ellas hay una pared.

Link al apartado del manual donde especifica el tipo de retorno y los demás parametros:  http://www.comunidadgm.org/manual_GM/Deteccion_de_colisiones.htm

Básicamente verifica si hay una colision de una instancia de "obj" entre los dos puntos especificados.

324
Buena aplicación, me ha convencido bastante.
Aún la estoy probando, mi inglés es pésimo XD asi que espero que esta aplicación me pueda ayudar.
Está bastante interesante, y por sobre todo el apartado teórico.
325
Preguntas y respuestas / Re:ayuda con la destruccion
Noviembre 28, 2013, 04:17:28 AM
Modifiqué un poco el codigo, principalmente lo saqué de Step, porque pienso que bien podría colocarse en "Left Pressed" convenientemente.

[GML]
resistencia -=10

if (resistencia <76)
{
image_index=0
}

if (resistencia <51)
{
image_index=1
}

if (resistencia <30)
{
image_index=2
}

if (resistencia <25)
{
    image_index=3
}

if (resistencia<10 and bandera == false)// Una alternativa para no usar bandera: if (resistencia<10 and alarm[0] < 1)
{
    bandera = true;
    alarm[0]=room_speed;
}

[/GML]

Y en alarm[0]
[gml]
if (image_index == 4)
{
    instance_create(x,y,object1);
    instance_destroy();
}

if (image_index == 3)
{
    image_index =4
    alarm[0] = room_speed;
}
[/gml]

Esto daría una animación, pasado un segundo se vería el huevo partido en dos, y pasado otro segundo aparecería el animal.
326
Preguntas y respuestas / Re:ayuda con la destruccion
Noviembre 28, 2013, 02:13:37 AM
según entiendo entonces deberías colocar la alarma así:

if (resistencia <1 )
     alarm[0] = room_speed * 2;

En el evento Alarm[0]

instance_destroy();
instance_create(x,y,object1);
327
Preguntas y respuestas / Re:Problema con cambio de arma
Noviembre 20, 2013, 04:04:01 PM
Hmm... podrías entonces colocar el código completo, porque no sabría donde está el fallo :-[
328
Preguntas y respuestas / Re:Problema con cambio de arma
Noviembre 20, 2013, 02:58:46 PM
Lo más probable es que haya un error de lógica.
Yo te recomiendo que administres las armas con cadenas. Por ejemplo:
arma = "normal", arma = "ice", arma = "fire"

entonces las verificaciones se harían más sencillas, por ejemplo:

[gml]if (arma = "normal")
    arma = "ice"

if (arma = "ice")
    arma = "fire"

if (arma = "fire")
    arma = "normal" [/gml]
329
Bueno, básicamente la referencia más útil es el manual: http://www.comunidadgm.org/manual_GM/Index.php

Acá, está la explicación sobre los parents y cómo afecta a los eventos: http://www.comunidadgm.org/manual_GM/Mas_sobre_los_objetos.htm

Y luego, la experiencia, creo XD
330
Lo único que tenés que hacer es ir a la parte de Tiles, del room, y crear una nueva profundidad.
Una profundidad pequeña indica que va a estar más por encima, por lo general para que quede por encima de los objetos, se usa un depth en negativo, -100 por ejemplo.

Con eso bastaría para que queden por encima, a menos claro que tu personaje tenga una depth más pequeña.