Entrar
Últimos assuntos
» Zombie Revengerpor 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
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 : 22
Número de Mensagens : 383
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

» Alguem sabe como?
» Text box, alguém sabe como criar?
» Como faz essas miniaturas?ALGUEM SABE?
» Alguém sabe como fazer power-ups?
» Alguem sabe como fazer highscores on-line?
» Text box, alguém sabe como criar?
» Como faz essas miniaturas?ALGUEM SABE?
» Alguém sabe como fazer power-ups?
» Alguem sabe como fazer highscores on-line?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|