GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Ontem à(s) 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

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» 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

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


alguém sabe como colocar colisão nos obstáculos

2 participantes

Ir para baixo

alguém sabe como colocar colisão nos obstáculos Empty alguém sabe como colocar colisão nos obstáculos

Mensagem por Rafa_02 Dom 06 Ago 2023, 23:11

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

Rafa_02
Rafa_02

Data de inscrição : 02/08/2023
Reputação : 0
Número de Mensagens : 2
Prêmios : alguém sabe como colocar colisão nos obstáculos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

alguém sabe como colocar colisão nos obstáculos Empty Re: alguém sabe como colocar colisão nos obstáculos

Mensagem por GabrielXavier Qua 09 Ago 2023, 15:15

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.
GabrielXavier
GabrielXavier

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 25/02/2012
Reputação : 40
Número de Mensagens : 399
Prêmios : alguém sabe como colocar colisão nos obstáculos Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker Studio 2.0


theguitarmester gosta desta mensagem

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos