Entrar
Últimos assuntos
» Servidor de Discord do fórum?por Super Games Ontem à(s) 01:27
» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10
» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
alguém sabe como colocar colisão nos obstáculos
2 participantes
Página 1 de 1
alguém sabe como colocar colisão nos obstáculos
obj_controle_game
CRIAR
global.score = 0;
font_map = "0123456789";
font = font_add_sprite_ext(Sprite19, font_map, false, 1);
cam_w = camera_get_view_width(view_camera[0]);
cam_h = camera_get_view_height(view_camera[0]);
gui_w = cam_w;
gui_h = cam_h;
display_set_gui_size(gui_w, gui_h);
randomize();
timer = 90; // Definindo o valor inicial de "timer" como 90 (ou outro valor que você desejar)
alarm[0] = timer;
ALARME 0
// Ajuste o valor do espacamento entre os obstaculos para algo maior
var obstacle_spacing = 200; // Espaçamento entre os obstáculos (ajuste conforme necessário)
// Ajuste o intervalo aleatório para garantir que o obstáculo inferior fique totalmente visível na tela
var min_obstacle_y = max(-40 + obstacle_spacing, sprite_height); // Altura mínima do obstáculo em relação à parte de cima da tela (limitado pelo limite superior)
var max_obstacle_y = min(387 - obstacle_spacing - sprite_height, cam_h - 40 - obstacle_spacing - sprite_height); // Altura máxima do obstáculo em relação à parte de baixo da tela (limitado pelo limite inferior)
var obstacle_y = irandom_range(min_obstacle_y, max_obstacle_y); // Altura vertical aleatória para o obstáculo
// Criação do obstáculo superior
var p_up = instance_create_layer(cam_w, 0, "predios", obj_obstacle);
p_up.image_angle = 180; // Gira o sprite do obstáculo para cima
p_up.y = obstacle_y - obstacle_spacing;
// Criação do obstáculo inferior
var p_down = instance_create_layer(cam_w, 0, "predios", obj_obstacle);
p_down.y = obstacle_y + obstacle_spacing;
// Define a velocidade de movimento dos obstáculos (ajuste conforme necessário)
p_up.hspeed = -3;
p_down.hspeed = -3;
// Configura o alarme para criar o próximo obstáculo após 50 frames
alarm[0] = 45; // Intervalo de tempo entre a criação de obstáculos
DESENHAR GUI
draw_set_font(font);
draw_set_halign(fa_center);
draw_text(gui_w / 2,20,global.score);
draw_set_font(-1);
draw_set_halign(-1);
obj_obstacle
CRIAR
hspeed = -1;
CAT1
CRIAR
/*/ Jump é uma variavel de pulo, siginifica que quando apertar com o mouse ele vai dar um pulo de 2.3, o angle controla o angulo
/*/
vspeed = 0;
vspeed_clamp = 6;
gravity = 0.1;
jump = 2.8;
angle = 0;
ETAPA
// sign é para retornar a variavel//*
angle = lerp(angle,-vspeed*27,.2);
// Variável para armazenar a próxima posição vertical do personagem após aplicar a velocidade vertical
var move_y = y + vspeed;
// Verifica se o personagem está se movendo para baixo (vspeed > 0)
if (vspeed > 0) {
// Ajuste para evitar afundamento na colisão ao descer
// Enquanto houver colisão na próxima posição vertical do personagem (move_y)
// Diminui o valor de move_y em 0.1 para ajustar a posição vertical do personagem
// Define vspeed como 0 para parar o movimento vertical
while (place_meeting(x, move_y, obj_colisao)) {
move_y -= 0.1;
vspeed = 0;
}
} else if (vspeed < 0) {
// Verifica se o personagem está se movendo para cima (vspeed < 0)
// Ajuste para evitar colisão atravessando o teto ao subir
// Enquanto houver colisão na próxima posição vertical do personagem (move_y)
// Aumenta o valor de move_y em 0.1 para ajustar a posição vertical do personagem
// Define vspeed como 0 para parar o movimento vertical
while (place_meeting(x, move_y, obj_colisao)) {
move_y += 0.1;
vspeed = 0;
}
}
// Atualiza a posição vertical do personagem após o ajuste
y = move_y;
// Aplicação da gravidade e limitação da velocidade vertical
vspeed += gravity;
vspeed = clamp(vspeed, -vspeed_clamp, vspeed_clamp);
// Ajuste para reduzir o atrito no chão
// Se houver colisão imediatamente abaixo do personagem (y + 1)
if (place_meeting(x, y + 1, obj_colisao)) {
// Ajuste para evitar travamento no chão
// Enquanto não houver colisão na próxima posição vertical do personagem
// Aumenta ou diminui a posição vertical do personagem em 0.1 para ajustar a posição
// Define vspeed como 0 para parar o movimento vertical
while (!place_meeting(x, y + sign(vspeed), obj_colisao)) {
y += sign(vspeed) * 0.1;
}
vspeed = 0;
}
DESENHAR
// No evento "Draw":
// Desenha o sprite atual do personagem (sprite_index) na posição (x, y) com rotação (angle) e tamanho padrão (1)
// Utiliza a cor branca (c_white) sem efeito de espelhamento (1)
draw_sprite_ext(sprite_index, image_index, x, y, 1, 1, angle, c_white, 1);
obj_obstacle_collider
CRIAR
global.score = 0;
font_map = "0123456789";
font = font_add_sprite_ext(Sprite19, font_map, false, 1);
cam_w = camera_get_view_width(view_camera[0]);
cam_h = camera_get_view_height(view_camera[0]);
gui_w = cam_w;
gui_h = cam_h;
display_set_gui_size(gui_w, gui_h);
randomize();
timer = 90; // Definindo o valor inicial de "timer" como 90 (ou outro valor que você desejar)
alarm[0] = timer;
ALARME 0
// Ajuste o valor do espacamento entre os obstaculos para algo maior
var obstacle_spacing = 200; // Espaçamento entre os obstáculos (ajuste conforme necessário)
// Ajuste o intervalo aleatório para garantir que o obstáculo inferior fique totalmente visível na tela
var min_obstacle_y = max(-40 + obstacle_spacing, sprite_height); // Altura mínima do obstáculo em relação à parte de cima da tela (limitado pelo limite superior)
var max_obstacle_y = min(387 - obstacle_spacing - sprite_height, cam_h - 40 - obstacle_spacing - sprite_height); // Altura máxima do obstáculo em relação à parte de baixo da tela (limitado pelo limite inferior)
var obstacle_y = irandom_range(min_obstacle_y, max_obstacle_y); // Altura vertical aleatória para o obstáculo
// Criação do obstáculo superior
var p_up = instance_create_layer(cam_w, 0, "predios", obj_obstacle);
p_up.image_angle = 180; // Gira o sprite do obstáculo para cima
p_up.y = obstacle_y - obstacle_spacing;
// Criação do obstáculo inferior
var p_down = instance_create_layer(cam_w, 0, "predios", obj_obstacle);
p_down.y = obstacle_y + obstacle_spacing;
// Define a velocidade de movimento dos obstáculos (ajuste conforme necessário)
p_up.hspeed = -3;
p_down.hspeed = -3;
// Configura o alarme para criar o próximo obstáculo após 50 frames
alarm[0] = 45; // Intervalo de tempo entre a criação de obstáculos
DESENHAR GUI
draw_set_font(font);
draw_set_halign(fa_center);
draw_text(gui_w / 2,20,global.score);
draw_set_font(-1);
draw_set_halign(-1);
obj_obstacle
CRIAR
hspeed = -1;
CAT1
CRIAR
/*/ Jump é uma variavel de pulo, siginifica que quando apertar com o mouse ele vai dar um pulo de 2.3, o angle controla o angulo
/*/
vspeed = 0;
vspeed_clamp = 6;
gravity = 0.1;
jump = 2.8;
angle = 0;
ETAPA
// sign é para retornar a variavel//*
angle = lerp(angle,-vspeed*27,.2);
// Variável para armazenar a próxima posição vertical do personagem após aplicar a velocidade vertical
var move_y = y + vspeed;
// Verifica se o personagem está se movendo para baixo (vspeed > 0)
if (vspeed > 0) {
// Ajuste para evitar afundamento na colisão ao descer
// Enquanto houver colisão na próxima posição vertical do personagem (move_y)
// Diminui o valor de move_y em 0.1 para ajustar a posição vertical do personagem
// Define vspeed como 0 para parar o movimento vertical
while (place_meeting(x, move_y, obj_colisao)) {
move_y -= 0.1;
vspeed = 0;
}
} else if (vspeed < 0) {
// Verifica se o personagem está se movendo para cima (vspeed < 0)
// Ajuste para evitar colisão atravessando o teto ao subir
// Enquanto houver colisão na próxima posição vertical do personagem (move_y)
// Aumenta o valor de move_y em 0.1 para ajustar a posição vertical do personagem
// Define vspeed como 0 para parar o movimento vertical
while (place_meeting(x, move_y, obj_colisao)) {
move_y += 0.1;
vspeed = 0;
}
}
// Atualiza a posição vertical do personagem após o ajuste
y = move_y;
// Aplicação da gravidade e limitação da velocidade vertical
vspeed += gravity;
vspeed = clamp(vspeed, -vspeed_clamp, vspeed_clamp);
// Ajuste para reduzir o atrito no chão
// Se houver colisão imediatamente abaixo do personagem (y + 1)
if (place_meeting(x, y + 1, obj_colisao)) {
// Ajuste para evitar travamento no chão
// Enquanto não houver colisão na próxima posição vertical do personagem
// Aumenta ou diminui a posição vertical do personagem em 0.1 para ajustar a posição
// Define vspeed como 0 para parar o movimento vertical
while (!place_meeting(x, y + sign(vspeed), obj_colisao)) {
y += sign(vspeed) * 0.1;
}
vspeed = 0;
}
DESENHAR
// No evento "Draw":
// Desenha o sprite atual do personagem (sprite_index) na posição (x, y) com rotação (angle) e tamanho padrão (1)
// Utiliza a cor branca (c_white) sem efeito de espelhamento (1)
draw_sprite_ext(sprite_index, image_index, x, y, 1, 1, angle, c_white, 1);
obj_obstacle_collider
Rafa_02- Data de inscrição : 02/08/2023
Reputação : 0
Número de Mensagens : 2
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: alguém sabe como colocar colisão nos obstáculos
Você pode usar o evento de colisão do obj_player com o obj_obstaculo, esse evento é ativado sempre que a sprite ou mascara dos dois objetos se tocam, então ali no evento colisão dos dois você executa os códigos necessários.
O obj_obstaculo também possui o evento colisão onde você pode executar códigos no próprio obj_obstaculo quando o player colidir com o obstáculo.
Não me recordo se o evento colisão dos objetos identifica colisões apenas com objetos marcados como "sólidos" ou não, você vai precisar testar isto, estou sem o GameMaker aqui no momento para testar.
Se sua duvida não foi solucionada, se possível, apresente mais detalhes sobre o projeto para entendermos melhor o contexto.
O obj_obstaculo também possui o evento colisão onde você pode executar códigos no próprio obj_obstaculo quando o player colidir com o obstáculo.
Não me recordo se o evento colisão dos objetos identifica colisões apenas com objetos marcados como "sólidos" ou não, você vai precisar testar isto, estou sem o GameMaker aqui no momento para testar.
Se sua duvida não foi solucionada, se possível, apresente mais detalhes sobre o projeto para entendermos melhor o contexto.
GabrielXavier- Games Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios :
x 0 x 1 x 0
x 0 x 1 x 1
x 0 x 0 x 0
Plataformas :- Game Maker Studio 2.0
theguitarmester gosta desta mensagem
Tópicos semelhantes
» Como colocar colisão com bloco Sólido apenas com 1
» como colocar musica quando entra em colisão com o inimigo[RESOLVIDO]
» Alguem pode me ajudar na step do meu obj_Player como colocar um tiro
» [Android] Mestre dos Obstaculos
» Mestre dos Obstáculos [Windows e Android]
» como colocar musica quando entra em colisão com o inimigo[RESOLVIDO]
» Alguem pode me ajudar na step do meu obj_Player como colocar um tiro
» [Android] Mestre dos Obstaculos
» Mestre dos Obstáculos [Windows e Android]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|