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

1
El manual dice:
CitarNote: this function sets the speed of the instance, so even if you stop using this code, the instance will keep moving in the previous direction, so it is necessary to set the instance speed to 0 if you wish it to stop. See the code example below.

http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/movement/move_towards_point.html

Además, los dos primeros parámetros de la función son las coordenadas (x,y) absolutas a las que quieres mover el objeto, pero tú le estás pasando un ángulo, cosa que no tiene sentido.




Una solución simple sería hacer esto:
[gml]
if (keyboard_check(ord("W"))) {
    x += lengthdir_x(velocidad, direction);
    y += lengthdir_y(velocidad, direction);
}
if (keyboard_check(ord("S"))) {
    x -= lengthdir_x(velocidad, direction);
    y -= lengthdir_y(velocidad, direction);
}
[/gml]
Personalmente no me gusta usar las funciones de movimiento del GM, prefiero modificar directamente las coordenadas de los objetos.

http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/lengthdir_x.html
http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/lengthdir_y.html
2
En windows puedes obtener la información de las variables de entorno, así:
[gml]
environment_get_variable("USERNAME");
[/gml]
http://docs.yoyogames.com/source/dadiospice/002_reference/miscellaneous/environment_get_variable.html
https://www.rapidee.com/en/environment-variables
3
Cita de: T789 en Agosto 18, 2020, 08:35:31 PM
¿eso hace que los componentes que son hspeed y vspeed se adapten segun... La direcion y magnitud del vector?
Sí, y viceversa. Las cuatro variables de velocidad se mantienen sincronizadas entre sí, cambias una y las otras tres se adaptan automáticamente.




Aunque ahora que lo mencionas, este código que pusiste no debería funcionar, porque el evento Create se ejecuta antes que lo del with, de modo que estarías moviendo la instancia antes de definir su velocidad.
Cita de: T789 en Agosto 18, 2020, 07:02:38 PM
[gml]
/// Event Step obj_player
if (keyshoot && ammo > 0)  {
   with(instance_create(x, y, obj_bullet) ) {
      direction = image_angle;
      speed = 7;
   }

/// Event Create obj_bullet
x = x + (2*hspeed);
y = y + (2*vspeed);
[/gml]
4
1. direction y speed son la dirección y magnitud del vector velocidad, respectivamente, y hspeed/vspeed son sus componentes. Además, el signo de speed representa el sentido del vector.

2. Las funciones lengthdir_x(d, r) y lengthdir_y(d, r) son simplificaciones de las funciones trigonométricas, así:
[gml]
lengthdir_x(d, r) == d*dcos(r);
lengthdir_y(d, r) == -d*dsin(r);
[/gml]
(dcos() y dsin() son equivalentes a cos() y sin(), con la diferencia de que reciben el ángulo en grados y no en radianes.)

La razón por la que se multiplica la función sin() por -1 es que el eje vertical en las computadoras está invertido (los positivos "bajan") respecto a como se representa normalmente en un plano cartesiano (los positivos "suben").



[spoiler=no me abras pls]

[/spoiler]

3. Este código:
[gml]/// Event Create obj_bullet
x = x + (2*hspeed);
y = y + (2*vspeed);[/gml]
Lo que hace es evitar que la bala "empiece a moverse" desde la misma ubicación que el jugador, con esa suma lo que se hace es posicionar de inmediato la bala a donde debería estar dentro de dos steps (adelantar el tiempo... (?)... ), considerando la velocidad que lleva.
5
[gml]
var obj = instance_place(x + sign(image_xscale), y, obj_buster);
if(instance_exists(obj))
with(obj) {
    // bla bla bla...
}
[/gml]
http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/instance%20functions/instance_place.html
6
[gml]
instance_create(x + lengthdir_x(15, image_angle), y + lengthdir_y(15, image_angle), bala_coomp_navecita)
[/gml]
http://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/lengthdir_x.html
7
Podrías usar la API de Gamejolt.
https://gamejolt.com/game-api/doc
8
[gml]
objeto_a_crear = asset_get_index(global.texto_R3[global.contador_texto+1]);
[/gml]

http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/asset_get_index.html
9
[gml]
text[0] = "He desechado " + string(global.Item[0]);
[/gml]
11
Tendrías que hacer tú mismo el cálculo del color resultante para cada vértice de los modelos. Se me ocurre algo así:

Para establecer el color y alpha de blending para los modelos tendrías que utilizar una variable global y un script diferente:
[gml]
///Algún evento create
global.color = c_white;
global.alpha = 1;
[/gml]
Luego, un script para establecer el color y alpha de blending para los modelos:
[gml]
///draw_set_color2(color, alpha);
global.color = argument0;
global.alpha = argument1;
[/gml]

Luego, un script para obtener el color resultante de la mezcla:
(GM utiliza el "darken blending mode", que selecciona el menor de los componentes de color RGB.)
[gml]
///color2(color);

return make_colour_rgb(
    min(colour_get_red(argument0), colour_get_red(global.color)),
    min(colour_get_green(argument0), colour_get_green(global.color)),
    min(colour_get_blue(argument0), colour_get_blue(global.color))
);
[/gml]
Y por último, un script para obtener el alpha resultante:
[gml]
///alpha2(alpha);
return argument0*global.alpha;
[/gml]

Ahora, cuando quieras dibujar figuras que respondan tanto a su color de vértice como al "color global", tendrías que hacer algo así:
[gml]
/// Evento Draw
draw_set_color2(c_yellow, 0.5);

d3d_primitive_begin(pr_trianglestrip);

d3d_vertex_colour(100, 100, 0, color2(c_white), alpha2(1));
d3d_vertex_colour(200, 200, 100, color2(c_gray), alpha2(1));
d3d_vertex_colour(150, 100, 200, color2(c_black), alpha2(1));

d3d_primitive_end();
[/gml]
Dibujé primitivas, pero creo que también funcionará en vértices de modelos.
13
Una forma más fácil sería solo hacer esto:
[gml]
/// Evento alarm
bonus = instance_create(0, 0, obj_bonus)
with(bonus) {
    while(!place_empty(x, y))
        x = irandom(room_width /32)*32;
        y = irandom(room_height/32)*32;
    }
}
[/gml]
Así te ahorras el uso de esos arreglos xpos y ypos.