Game Maker - создание игр | HellRoom Games
Декабрь 09, 2024, 16:30:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Объект застревает на гладкой поверхности из нескольких объектов  (Прочитано 1673 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NНN
Посетитель
**

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 15


« : Июль 22, 2024, 22:16:07 »

У меня есть гладкая платформа из множества квадратных блоков и человечек, движущийся по ней, включена встроенная физика
код человечка:
create:
Код:
phy_fixed_rotation = true;
step:
Код:
if(keyboard_check(ord("A"))){
phy_speed_x = max(-4, phy_speed_x-1)
}
if(keyboard_check(ord("D"))){
phy_speed_x = min(4, phy_speed_x+1)
}

Физические параметры человечка:
Код:
density: 0.5
restitution: 0
collision group: 1
linear damping: 0
angular damping: 100
friction: 1
Физические параметры блока платформы:
Код:
density: 0
restitution: 0
collision group: 1
linear damping: 0
angular damping: 0
friction: 6

Когда человечек движется по платформе, он иногда самопроизвольно останавливается и не может идти дальше в ту сторону. Если отойти назад, и пойти вперёд снова, он проходит то место, где останавливался

Я использую GM Studio 2
« Последнее редактирование: Июль 25, 2024, 07:30:40 от NНN » Записан
SPLURGEOLA
Пользователь
***

Репутация: 10
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: пиксель-арт обработки
Сообщений: 86


LOOKAROUND


WWW
« Ответ #1 : Июль 24, 2024, 11:03:17 »

У меня есть гладкая платформа из множества квадратных блоков и человечек, движущийся по ней, включена встроенная физика
код человечка:
create:
Код:
phy_fixed_rotation = true;
step:
Код:
if(keyboard_check(ord("A"))){
phy_speed_x = max(-4, phy_speed_x-1)
}
if(keyboard_check(ord("D"))){
phy_speed_x = min(4, phy_speed_x+1)
}

Когда человечек движется по платформе, он иногда самопроизвольно останавливается, и не может идти дальше в ту сторону. Если отойти назад, и пойти вперёд снова, он проходит то место, где останавливался

Цитировать
Для исправления этой проблемы вы можете попробовать увеличить значение максимальной скорости, добавив большее число в функцию max и min. Например:
phy_speed_x = max(-8, phy_speed_x-2)
phy_speed_x = min(8, phy_speed_x+2)

Это поможет человечку преодолевать возможные препятствия на своем пути без остановок. Также рекомендуется проверить возможные причины остановки, такие как столкновения с другими объектами или наличие других физических эффектов, которые могут влиять на движение персонажа.
Записан

NНN
Посетитель
**

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 15


« Ответ #2 : Июль 25, 2024, 07:19:36 »

Цитировать
Для исправления этой проблемы вы можете попробовать увеличить значение максимальной скорости, добавив большее число в функцию max и min. Например:
phy_speed_x = max(-8, phy_speed_x-2)
phy_speed_x = min(8, phy_speed_x+2)

Это поможет человечку преодолевать возможные препятствия на своем пути без остановок. Также рекомендуется проверить возможные причины остановки, такие как столкновения с другими объектами или наличие других физических эффектов, которые могут влиять на движение персонажа.

Увеличение скорости не помогает. Платформа абсолютно гладкая, нет никаких препятствий.
Я заметил, что остановки происходят тогда, когда край человечка совпадает с краями блоков, из которых состоит платформа.
Записан
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #3 : Август 09, 2024, 20:07:14 »

Платформа буквально не гладкая, раз состоит из нескольких блоков.
Это классическая проблема Box2D, смотрите гайды, например: https://www.iforce2d.net/b2dtut/ghost-vertices
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.1 секунд. Запросов: 29.