Game Maker - создание игр | HellRoom Games
Февраль 16, 2025, 16:07:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

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

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

Пол: Мужской
API: 8.0 Pro
Сообщений: 187

Залипаю..


« : Декабрь 15, 2010, 15:45:47 »

столкнулся с такой проблемой:у меня есть герой, в событии step я поставил ему код
Код:
if mouse_x < 0 window_mouse_set(0, window_mouse_get_y())
    if mouse_x > room_width window_mouse_set(room_width, window_mouse_get_y())
    if mouse_y < 0 window_mouse_set(window_mouse_get_x(), 0)
    if mouse_y > room_height window_mouse_set(window_mouse_get_x(), room_height)


чтобы мышка не уходила за окно windows.Но мне были нужны еще стены, я их поставил и в событии столкновения с ними написал код
Код:
speed = 0

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

Че делать ???
Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #1 : Декабрь 15, 2010, 16:05:41 »

Попробуй так:

Код:
if mouse_x < 0 window_mouse_set(Толщина_стены, window_mouse_get_y())
    if mouse_x > room_width window_mouse_set(room_width - Толщена_стены, window_mouse_get_y())
    if mouse_y < 0 window_mouse_set(window_mouse_get_x(), Толщена_стрены)
    if mouse_y > room_height window_mouse_set(window_mouse_get_x(), room_height - Толщена стены)

Вместо "Толщина_стены" Ставь значение толщины спрайта стены.
Записан

_KO_
Участник
****

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

Пол: Мужской
API: 8.0 Pro
Сообщений: 187

Залипаю..


« Ответ #2 : Декабрь 15, 2010, 16:17:55 »

не помогло
Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #3 : Декабрь 15, 2010, 16:36:06 »

А как у тебя герой привязан к мышке? Пример можешь скинуть?
Записан

_KO_
Участник
****

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

Пол: Мужской
API: 8.0 Pro
Сообщений: 187

Залипаю..


« Ответ #4 : Декабрь 15, 2010, 16:46:32 »

Код:
x = mouse_x
y = mouse_y
Записан

Fantom
I am... All of me
Гл. Администратор
*

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

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+1000 репутации]За отличные статьи по Game Maker!Тру Админ :DЗнаток Game Maker...
API: GameMaker Studio Master
Сообщений: 5026



« Ответ #5 : Декабрь 15, 2010, 16:49:35 »

Попробуй сделать не моментальное перемещение в координаты, а постепенное:
Код:
move_towards_point(mouse_x,mouse_y,
point_distance(x,y,mouse_x,mouse_y)/20);
Чем дальше объект от мыши, тем быстрее он к ней будет приближаться.
Увеличивай коэффициент (20), чтобы объект медленнее следовал за мышью,
и наоборот, уменьшай, чтобы ускорить. ;)
Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #6 : Декабрь 15, 2010, 16:53:13 »

И еще можно перед перемещением делать проверку "свободно ли место, в которое нужно переместить игрока?"
Код:
if !place_meeting(mouse_x,mouse_y,стена)
    {
    Перемещать за мышкой
    }
Записан

_KO_
Участник
****

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

Пол: Мужской
API: 8.0 Pro
Сообщений: 187

Залипаю..


« Ответ #7 : Декабрь 15, 2010, 17:57:23 »

Попробуй сделать не моментальное перемещение в координаты, а постепенное:
Код:
move_towards_point(mouse_x,mouse_y,
point_distance(x,y,mouse_x,mouse_y)/20);
Чем дальше объект от мыши, тем быстрее он к ней будет приближаться.
Увеличивай коэффициент (20), чтобы объект медленнее следовал за мышью,
и наоборот, уменьшай, чтобы ускорить. ;)

разделил на три все получилось

Добавлено: Март 01, 2011, 22:42:20
И еще можно перед перемещением делать проверку "свободно ли место, в которое нужно переместить игрока?"
Код:
if !place_meeting(mouse_x,mouse_y,стена)
    {
    Перемещать за мышкой
    }

я так сделал всеравно не сработало
« Последнее редактирование: Март 01, 2011, 22:42:20 от FanTom » Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #8 : Декабрь 15, 2010, 18:07:34 »

Я имел ввиду вместо "Перемещать за мышкой" поставить то, что предложил FanTom. Хотя если без этого нормально работает, будет уже лишнее. 
Записан

_KO_
Участник
****

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

Пол: Мужской
API: 8.0 Pro
Сообщений: 187

Залипаю..


« Ответ #9 : Декабрь 15, 2010, 18:12:27 »

аа я обычный написал whistling
Записан

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

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