Game Maker - создание игр | HellRoom Games

Game Maker | GameMaker: Studio [Game-Maker.ru] => Для новичков: вопросы и ответы по Game Maker => Тема начата: NНN от Июль 22, 2024, 22:16:07



Название: Объект застревает на гладкой поверхности из нескольких объектов
Отправлено: NНN от Июль 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


Название: Re: Объект застревает на гладкой поверхности из нескольких объектов
Отправлено: SPLURGEOLA от Июль 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)

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


Название: Re: Объект застревает на гладкой поверхности из нескольких объектов
Отправлено: NНN от Июль 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)

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

Увеличение скорости не помогает. Платформа абсолютно гладкая, нет никаких препятствий.
Я заметил, что остановки происходят тогда, когда край человечка совпадает с краями блоков, из которых состоит платформа.


Название: Re: Объект застревает на гладкой поверхности из нескольких объектов
Отправлено: MusNik от Август 09, 2024, 20:07:14
Платформа буквально не гладкая, раз состоит из нескольких блоков.
Это классическая проблема Box2D, смотрите гайды, например: https://www.iforce2d.net/b2dtut/ghost-vertices