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
» Zombie Revenger
por theokof98 Hoje à(s) 17:10

» Tamanho da fonte
por Lucas paz Qui 21 Set 2023, 09:20

» Venha conferir o Espaço GMBR no Discord!
por Lucas paz Seg 18 Set 2023, 11:50

» Animação do sprite muito rápida no draw gui
por PedroX Seg 18 Set 2023, 09:50

» mod joiplay
por lhit. Dom 10 Set 2023, 18:02

» [dúvida] Occlusion culling (GMS)
por lhit. Dom 10 Set 2023, 18:00

» Evoluship [0.1.3] (DevLog)
por Bruno_Ribeiro Sex 08 Set 2023, 17:56

» Block Room
por Joton Qui 24 Ago 2023, 20:37

» Quanto tempo...
por SoMateus Dom 13 Ago 2023, 01:09

» Zodiac - Hellish Memory [0.1.2.7]
por theguitarmester Qui 10 Ago 2023, 10:20

» alguém sabe como colocar colisão nos obstáculos
por GabrielXavier Qua 09 Ago 2023, 15:15

» SISTEMA DE ITEM FLUTUANTE
por ArturJoeJAe Ter 08 Ago 2023, 23:23

» se a variavel não for true alguma coisa acontecer
por cacique_Gamerr Ter 08 Ago 2023, 16:00

» Retorno da GMBR!!!
por polosam Sáb 05 Ago 2023, 15:44

» Os códigos não estão funcionando
por JOZ. Qua 02 Ago 2023, 16:49

» [0.0.3] Frightorix
por Fuzenrad Ter 01 Ago 2023, 15:44

» [Resolvido]Como criar um evento com base no tempo de um cronômetro?
por GabrielXavier Ter 25 Jul 2023, 08:25

» Gravamos Shorts/Tiktok sobre seu jogo
por JOZ. Sex 21 Jul 2023, 12:19

» #IAJ Aula 03 - Saúde do player e inimigo Top Down
por ArturJoeJAe Qui 20 Jul 2023, 22:03

» [+18] Zodiac Hentai - Hellish Memory
por theguitarmester Seg 17 Jul 2023, 21:38

» Como traçar linhas
por Limalokão Qui 13 Jul 2023, 15:07

» SEQUENCIAS
por Pit Bull Dom 09 Jul 2023, 15:05

» Apostila do game maker 8.0 (português)
por Brunaomm23 Qua 05 Jul 2023, 13:25

» iniciando no 3d
por Brunaomm23 Seg 03 Jul 2023, 19:44

» andar balançando
por KanekiZLF Qui 29 Jun 2023, 15:55


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 : 22
Número de Mensagens : 383
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

- Tópicos semelhantes

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