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

271
Preguntas y respuestas / Re:efecto giro de carta
Abril 02, 2013, 08:05:52 PM
Cita de: jose_cv21 en Abril 02, 2013, 05:51:53 PM
¿si hace falta usar 3d, seria posible utilizar un objeto 3d en mi aplicación 2d?
Si, pero no es realmente necesario. Manejando las escalas de imagen se puede facilmente.

Yo lo haria asi.
[gml]contador+=.1;
image_xscale=cos(contador);
image_index=image_xscale>0;[/gml]
Listo con eso basta, tienes que declarar la variable contador en create y tener un sprite con una subimagen con la parte de arriba de la carta y otra con la parte de abajo.
272
Como lo harìas normalmente, solo que no tienes que sumar el view_xview. Por ejemplo.
draw_sprite(spr_hud, 0, 128 456);
En lugar del codigo que te dieron hace rato. Es como dibujar directamente en la pantalla. No parece muy ùtil pero fàcilita algùnas cosas como no tener que usar una proyeccion ortografica en 3d.
273
Cita de: Klind en Marzo 31, 2013, 06:52:46 PM
Demasiado enredo jaja  XD...

Solucioné el problema de una forma un tanto "fea" y "pobre" pero a fin de cuentas está solucionado, puse esto en el evento press <Space> del personaje (que es la tecla que lo hace caminar por la ruta luego de que uno la traza:

if xx > x && place_free(x+1.5, y) {x += 1.5}
if xx < x && place_free(x-1.5, y) {x -= 1.5}
if yy > y && place_free(x, y+1.5) {y += 1.5}
if yy < y && place_free(x, y-1.5) {y -= 1.5}
mover = true


Eso lo desatasca de las paredes justo antes de mover la bolita. Igualmente espero en un futuro darle una solución decente a eso.

Una pregunta, ¿cómo haces que tu código se vea así grande y con los colores que identifican a las variables y funciones?
Que mal que no te haya podido ayudar, me habira gustado hacerte un ejemplo pero aqui en linux no puedo, me siento como wadk  :-[.

Para hacer lo de los colores tienes que usar el tag de codigo gml, durante un tiempo habia un icono pero con las actualizaciones murio  ;D. Se usa as'i [gml]if wololo then transformar() end;[/gml].
[gml]if wololo then transformar() end;[/gml]
274

Cita de: Maitreya en Marzo 30, 2013, 07:52:43 PM
No he leído todo el post, pero en el ultimo código TODO debería estar dentro del condicional if(!place_free... porque primero te mueves y luego si verificas que el espacio este libre, por eso es que se atasca.
Y por cierto, evita hacer doble post, por ahí hay una opción de modificar asi como lo hiciste antes
Mmm podría tener el "place_free" antes pero no es realmente necesario, ademas el código verifica si el espacio está libre antes de moverse.

Cita de: Klind en Marzo 30, 2013, 09:33:56 PM
Tiene máscara circular. Cada vez que le cambio algo al código, lo pruebo con las distintas máscaras (precisa, circular). Con rectangular ni hablar, el sprite es redondo por lo que no funciona esa máscara.
Mmmm que raro, teóricamente no debería suceder, en todo caso una solución algo fea a eso es dejar de usar image_angle, creas una nueva variable llamada por ejemplo "angulo" y modificas esa en lugar de image_angle, entonces en el evento draw pones esto.
[gml]draw_sprite_ext(sprite_index, image_index, x, y, image_scale, image_yscale, angulo, image_alpha, image_blend);[/gml]


Cita de: Klind en Marzo 30, 2013, 09:33:56 PM
¿Con ese tipo de movimiento que uso hay alguna forma de saber la coordenada de cada step antes de darlo? En ese caso puedo usar instance_place para que el personaje nunca llegue a tocar la pared.
En teoría eso es lo que debería de hacer el código que puse. Que alguien me corrija si me equivoco.

Aunque pensándolo bien esta este código que tenia en un juego viejo con el mismo tipo de movimiento. No recuerdo de donde lo saque, pero en general la idea del código no es mala a pesar de no ser el más eficiente.

Solo ponlo en end step y sigue usando el move_towards sin usar algún otro código para las colisiones.
[gml]var xmot, ymot;
if place_meeting(x,y,muro){

    x = xprevious;y = yprevious

    for (i=0; i<90; i+=2){
        xmot=x+lengthdir_x(speed,direction+i)
        ymot=y+lengthdir_y(speed,direction+i)
        if place_free(xmot,ymot){
            x = xmot;
            y = ymot;
            exit
        }
        xmot=x+lengthdir_x(speed,direction-i)
        ymot=y+lengthdir_y(speed,direction-i)
        if place_free(xmot, ymot){
            x = xmot;
            y = ymot;
            exit
        }
    }
}[/gml]
275
Cita de: francordoba en Marzo 29, 2013, 10:51:16 PM
Pero para lo otro, me da que no es posible en gamemaker.
... imposible, algo tan simplon?  :P.

Cita de: francordoba en Marzo 30, 2013, 03:29:57 AM
Lo puse ahí tambien y consigo el mismo resultado. Se a lo que te refieres, pero solo funciona si el objeto transportador no gira.

He hecho muñecos con los brazos y el arma adheridos al torso, no me dan problemas(en plataformas). Pero en un juego top down, y cuando el objeto cambie de angulo, ocurren los problemas.

No es lo mismo colocar un cañon en el centro de la base, que dos, y en posiciones relativas a dicha base.

Si solamente ahí una transición de la "x" e "y", va seda, pero si hay cambios de ángulo, se jodió el invento.

Si alguien pudiera crear un archivo con una solución que funcione para mi y la comunidad, le serviría a mucha gente ya que inspeccionando (llevo 24 horas), lo preguntan mucho por ahí y casi nadie da solución.
La verdad no puedo crearte el archivo ahora, lo que si te digo es que algo estás haciendo mal, no deberían temblar, no es nada del otro mundo he usado algo parecido para acomodar brazos manos y hasta dedos relativamente a la posición del jugador sin que el giro afecte nada.

Me parece que el problema es que estas usando los eventos mal, haz todo el movimiento del tanque en el evento step y haz todos los seguimientos de los cañones en el end_step o en el mismo draw, comenta si eso funciona :-[, también intenta si puedes unir todos los cañones a un solo objeto. Si nada funciona pasa las medidas del tanque y las posiciones en las que quieres los cañones y te digo como hacerlo completo.
276
Ahh era así.
[gml]
image_angle=point_direction(x,y, xx,yy);
var dx, dy;
dx=lengthdir_x(1, image_angle);
dy=lengthdir_y(1, image_angle);
repeat(vel){
    x+=place_free(x+dx, y)*dx;
    y+=place_free(x, y+dy)*dy;
}
[/gml]
277
Mmmm, es cierto se me paso pensar en eso  :P. Perdon  :-[.

[gml]
image_angle=point_direction(x,y, xx,yy);
var dx, dy;
dx=lengthdir_x(1, image_angle);
dy=lengthdir_y(1, image_angle);
repeat(vel){
    x+=place_free(x+dx, y);
    y+=place_free(x, y+dy);
}
[/gml]
Creo que asi funcionara  :-X.
278
Cita de: Ccaarlos en Marzo 30, 2013, 12:22:19 AM
Pues las etiquetas DLL son los cuadraditos que arrastras dentro de las acciones de un objeto en vez de poner execute a piece of code, ok?
Ah, se llaman librerias  :P, por aqui les dicen D&D como abreviacion de drag and drop.

Me parece que el problema es que las tienes en relativo y no absoluto, o quizas sea el depth. Usa el valor mas bajo posible, algo como -99999.
279
Que raro reviza que la speed sea 0 siempre 0 en el debug mode. Elimina todo lo que tenga que ver con ella. reviza que en las variables xx e yy sean a las que quieres ir, es decir las que estaban antes en el move_towards, fuera de eso no se me ocurre nada m[as.
280
Ni idea de que es eso de etiquetas DLL?, Podrias explicarlo mejor o poner un ejemplo?.
281
Cita de: Klind en Marzo 29, 2013, 09:29:34 PM
Es curioso porque SOLO pasa cuando el movimiento del personaje es en diagonal. Cuando lo tengo pegado a la pared y me muevo en linea recta hacia abajo se mueve perfecto.
Reviza que no tengas colisiones precisas activadas en tus sprites...

.
Bueno, para hacerlo a la antigua se har[ia as[i.
[gml]
var dx, dy;
dx=legthdir_x(1, point_direction(x,y, xx,yy));
dy=legthdir_y(1, point_direction(x,y, xx,yy));
repeat(vel){
    if !place_free(x+dx, y+dy) break;
    x+=dx:
    y+=dy;
}
[/gml]
Cambia tu movimiento por algo este, elimina el move towards y las cosas que tengan que ver con speed.
Edit: ups me faltaba un y+=dy en el c[odigo.
282
Tuve esta misma duda durante un tiempo, hasta hice una pregunta aqui en cgm pero no me entendieron xD. Al final la respuesta la encontre en unos scripts de funciones trigonometricas que alguien posteo y no se por que tenia el presentimiento de que all[i estaba la respuesta y s[i experimentando unas cuantas horas lo logr[e.

Ok de momento te doy los c[odigos, si gustas que explique solo dilo. Ponlos en el evento end step de cada uno de tus ca;ones

[gml]
//nota el tanque tiene que est[ar centrado.
//Para la flecha azul del frente
x=tanque.x+lenghtdir_x(16, tanque.direction);
y=tanque.y+lenghtdir_y(16, tanque.direction);
//cambia el 16 por la distancia por la deseada.

//para el primer canion
x=tanque.x+lenghtdir_x(12, tanque.direction+60);
y=tanque.y+lenghtdir_y(12, tanque.direction]+60);
//cambia el 12 por la distancia y varia el 60 hasta encontrar el lugar deseado.


//para el segundo canion
x=tanque.x+lenghtdir_x(12, tanque.direction-60);
y=tanque.y+lenghtdir_y(12, tanque.direction-60);
//cambia el 12 por la distancia y varia el 60 hasta encontrar el lugar deseado usa los valores contrarios al otro.
[/gml]
283
OK como ultimo ultimo (ahora si ultimo) intento hazlo de este modo.
[gml]
if !place_free(x, y){
       move_outside_solid(direction+180, speed);
}[/gml]

asegurate de ponerlo en @end step@ y poner el move_towards en step.
284
Primero que nada intentalo de este modo.
[gml]move_outside_solid(direction+180, speed).[/gml]

Se como lo har[ia de otro modo pero me da flojera escribirlo ahorita, ademas es mejor no cambiar tus codigos. intentar[e descargar el ejemplo aunque no lo podre ver por que estoy en linux, mientras comenta que tal te va usandolo as[i.
285
No exactamente pero, pero algo simple que se hace es usar un objeto controlador con el menor depth posible para que est[e sobre todo y poner en draw algo como esto.
[gml]draw_set_color(c_black);
draw_set_alpha(.5);//el alpha definira el valor de luminosidad 0=brillante 1=oscuro
draw_rectangle(view_xview, view_yview, view_xview+view_wview, view_yview+view_hview);
draw_set_color(c_white);
draw_set_alpha(1);
[/gml]