Пятница, 22 Ноября 2024, 00:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Нужна помощь с проектом в Game Maker
LosiahДата: Понедельник, 24 Октября 2016, 02:01 | Сообщение # 21
почетный гость
Сейчас нет на сайте
сделай проше напиши небольшой код спавна.
к объекту спавн в степ пишешь

if spawn = 1
{
r=irandom(3)
rx=0
ry=0
if r==0 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==1 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==2 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==3 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
instance_create(rx,ry, o_enemy)
spawn = 0
alarm[0] = 360
}

если рандомнное число допусти 2 то появление врага будет выполнено по координатам rx ry. координаты выбираешь сам. при редактировании комнаты в низу пишутся координаты позиции твоей мыши

вариант номер 2. пишешь диапазон координат объектов с которыми ты бы не хотел сталкиваться и если рандомные координаты попадают под этот диапазон то запускаешь скрипт снова, пока координаты не будут верными.
вариант номер 3. если твой npc появляется и сталкивается с объектом то его выталкивает или телепортирует ближе к центру комнаты.
есть ещё ещё ещё много вариантов.




Сообщение отредактировал Losiah - Понедельник, 24 Октября 2016, 02:02
SovaDeveloperДата: Понедельник, 24 Октября 2016, 16:41 | Сообщение # 22
был не раз
Сейчас нет на сайте
Losiah, Вообщем со спавном все шикарно!)
Можешь мне еще раз объяснить что со столкновением надо делать, ибо я не понял(((
TymonrДата: Понедельник, 24 Октября 2016, 17:58 | Сообщение # 23
With OpenSource forever
Сейчас нет на сайте
Цитата Losiah ()
Код
if spawn = 1
{
r=irandom(3)
rx=0
ry=0
if r==0 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==1 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==2 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
if r==3 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
instance_create(rx,ry, o_enemy)
spawn = 0
alarm[0] = 360

}

Ох уж этот говнокод)

По поводу смерти - должна быть проверка на валидность. Прежде чем обращаться к объекту просто проверяй, что он еще существует
По поводу застреваний - у тебя скорее всего смещение персонажа происходит с помощью set_position, а это будет телепортировать тебя в стены и т.п. Скачай какие-нибудь демки(Даже в самой студии вроде были топдуан демки) посмотри как сделано


Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах


Сообщение отредактировал Tymonr - Понедельник, 24 Октября 2016, 17:58
LosiahДата: Понедельник, 24 Октября 2016, 18:16 | Сообщение # 24
почетный гость
Сейчас нет на сайте
Смотри какая штука. если ты не задаёшь маску столкновения то она по умолчанию берёт за неё твою текстуру. в итоге герой застревает в пикселях дерева.


Добавлено (24 октября 2016, 18:16)
---------------------------------------------
Tymonr, я просто его код немного поменял. я бы не стал использовать эти функции в степ или аларм. я бы её в таймлайн поместил и сделал по своему.
так как получается что степ проверяет значение if spawn = 1 около 30 раз в секунду.




Сообщение отредактировал Losiah - Понедельник, 24 Октября 2016, 18:33
SovaDeveloperДата: Понедельник, 24 Октября 2016, 18:35 | Сообщение # 25
был не раз
Сейчас нет на сайте
Losiah,Картинка не показывается, пишет что у тебя скрыт общий доступ для просмотра
http://imageshack.com/a/img921/1598/2kNGLi.jpg
http://imageshack.com/a/img923/5779/FhalY3.jpg
Что нужно выбирать и выставлять??(Скриншоты)
P.S Можешь кинуть ссылку на какую-нибудь годную статью про тайм лайны , я просто понятия не имею что это такое :(

Добавлено (24 октября 2016, 18:35)
---------------------------------------------
Losiah, Вот картинки заработали)

Сообщение отредактировал SovaDeveloper - Понедельник, 24 Октября 2016, 18:32
LosiahДата: Понедельник, 24 Октября 2016, 18:37 | Сообщение # 26
почетный гость
Сейчас нет на сайте
Цитата SovaDeveloper ()

P.S Можешь кинуть ссылку на какую-нибудь годную статью про тайм лайны , я просто понятия не имею что это такое


не мне просто аларм самому не нравится. так то он ничего.


SovaDeveloperДата: Понедельник, 24 Октября 2016, 18:43 | Сообщение # 27
был не раз
Сейчас нет на сайте
Losiah, а сепаратор столкновения в спрайтах нужен?
LosiahДата: Понедельник, 24 Октября 2016, 18:51 | Сообщение # 28
почетный гость
Сейчас нет на сайте
Есть сборник уроков для начинающих. там есть решение основных вопросов


SovaDeveloperДата: Понедельник, 24 Октября 2016, 19:03 | Сообщение # 29
был не раз
Сейчас нет на сайте
Losiah, ого, пробежался глазами, очень даже доступно написано, спасибо за все, очень помог!)
ReanДата: Понедельник, 24 Октября 2016, 22:59 | Сообщение # 30
участник
Сейчас нет на сайте
Tymonr, по какому критерию, интересно, этот маленький кусочек является "говнокодом"?)) То что переключатели не используются вместо конструкции "if-then"? Или то, что запись без отступов и точек с запятой? Здесь, думаю, вообще надо благодарить, что не как индусы-программисты - весь код в одну строку :D Или то, что проверяется успешность операции присваивания "spawn = 1"? :D Ну здесь я даже не знаю - может так и задумано?)
Вопрос исключительно ради интереса, без злого умысла.


Сообщение отредактировал Rean - Понедельник, 24 Октября 2016, 23:00
LosiahДата: Вторник, 25 Октября 2016, 00:39 | Сообщение # 31
почетный гость
Сейчас нет на сайте
Rean, с моей точки зрение использовать "if spawn == 1"в степах только чтобы зациклить с аларм... э ну прямо бред. я просто написал то как это примерно должно быть в уже существующее тело функции
if spawn == 1
{
// < Сюда
instance_create(x,y, o_enemy)
spawn = 0
alarm[0] = 360
}

ещё хочу отметить что соблюдение всех правил синтаксиса это очень хорошо, если у твой код на 300 страниц. иначе всё в кашу переходит. а так для небольшого функционала, зачем?




Сообщение отредактировал Losiah - Вторник, 25 Октября 2016, 00:47
ReanДата: Вторник, 25 Октября 2016, 01:42 | Сообщение # 32
участник
Сейчас нет на сайте
Losiah, честно сказать, я может чего-то не понимаю (без сарказма), может какой-то "трюк", но проверка
Код

if (spawn = 1) {
    ...
    ...
    spawn = 0
}

полностью лишена смысла, так как в условиях оператора If сперва происходит присвоение значения, а потом только проверка успешности данного действия. Но, подозреваю, если у вас это работает, значит GML проще относится к невнимательности. Си таких ошибок не прощает :) Да и вообще, если нам надо проверить, что переменная не равна нулю, то достаточно написать:
Код

If spawn {
    ...
}


А правила синтаксиса надо соблюдать не взирая на размер программы, потому как иначе эта самая программа, в лучшем случае просто не скомпилируется, в худшем - будет вести себя некорректно, а потом отлаживай её до посинения.
Это же касается и оформления кода: это как хорошие манеры. Можно в повседневной жизни вести себя как быдло, а на все замечания отвечать: "Материться и харкаться перестану только тогда, когда буду в Палате Лордов или на приёме у английской Королевы." ;) В общем, не хочу занудствовать, это личное дело каждого, просто когда делишься кодом с другими, то соблюдения хотя бы основного общепринятого стиля - это как некий признак уважения. Losiah, это не относится лично к тебе, я просто рассуждаю на заданную тему. Да и вообще, любая "программка", начинается с: "Здесь процедурку быстренько напишу, там цикл в функцию оберну..." и понеслось :D Ну в общем, вы понимаете...
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг