Que tal makeros y makeras latinos e hispanoparlantes soy el pana 8-bits con una nueva pregunta.
Iré directo al grano en el modo batalla de mi juego de naves si las dos disparan al mismo tiempo cuando las balas colisionan solo la del player 1 se destruye aunque los dos players sean exactamente idénticos (aparte de sprites y controles) es decir que las dos balas deberían destruirse pero solo la del player 1 se destruye haciendo al 2 un pinshi dios, aquí dejo los codigos...
[gml] ///evento step de player 1
if keyboard_check(vk_left) {
x-=15
image_angle=180
}
if keyboard_check(vk_right) {
x+=15
image_angle=0
}
if keyboard_check(vk_up) {
y-=15
image_angle=90
}
if keyboard_check(vk_down) {
y+=15
image_angle=270
}
if keyboard_check_pressed(vk_space) {
w=instance_create(x,y,munition1C)
w.direction=image_angle
w.image_angle=image_angle
w.speed=20
}
if lives=0 {
instance_destroy()
}[/gml]
[gml]///evento step de player 2
if keyboard_check(ord("A")) {
x-=15
image_angle=180
}
if keyboard_check(ord("D")) {
x+=15
image_angle=0
}
if keyboard_check(ord("W")) {
y-=15
image_angle=90
}
if keyboard_check(ord("S")) {
y+=15
image_angle=270
}
if keyboard_check_pressed(vk_shift) {
w=instance_create(x,y,munition2C)
w.direction=image_angle
w.image_angle=image_angle
w.speed=20
}
if health=0 {
instance_destroy()
}[/gml]
[gml]///evento step de la munición del jugador 1(que por cierto se llama "munition1C")
if place_meeting(x,y,munition2C) {
instance_destroy()
}
if place_meeting(x+5,y,munition2C) {
instance_destroy()
}
if place_meeting(x-5,y,munition2C) {
instance_destroy()
}
if place_meeting(x-3,y,munition2C) {
instance_destroy()
}
if place_meeting(x+3,y,munition2C) {
instance_destroy()
}[/gml]
[gml]///evento step de la munición del jugador 1(que por cierto se llama "munition2C")
if place_meeting(x,y,munition1C) {
instance_destroy()
}
if place_meeting(x+5,y,munition1C) {
instance_destroy()
}
if place_meeting(x-5,y,munition1C) {
instance_destroy()
}
if place_meeting(x-3,y,munition1C) {
instance_destroy()
}
if place_meeting(x+3,y,munition1C) {
instance_destroy()
}[/gml]
No estoy seguro pero puede ser que cuando las balas colisionan, el codigo de una bala1 se ejecuta primero que el de la bala2, cuando la bala1 se autodestruye, la bala2 no tiene colision con la bala1 y por eso no se destruye.
Lo que puedes hacer es guardar en una variable la id de la otra bala y eliminar las dos
[gml]
otra_bala=instance_place(x,y,munition2C)
if otra_bala
{
with(otra_bala) {instance_destroy()}
instance_destroy()
}
[/gml]
No lo probe pero mas o menos esa es la idea.
Cita de: 3dgeminis en Septiembre 26, 2020, 10:30:36 PM
No estoy seguro pero puede ser que cuando las balas colisionan, el codigo de una bala1 se ejecuta primero que el de la bala2, cuando la bala1 se autodestruye, la bala2 no tiene colision con la bala1 y por eso no se destruye.
Lo que puedes hacer es guardar en una variable la id de la otra bala y eliminar las dos
[gml]
otra_bala=instance_place(x,y,munition2C)
if otra_bala
{
with(otra_bala) {instance_destroy()}
instance_destroy()
}
[/gml]
No lo probe pero mas o menos esa es la idea.
gracias genio