Нужна помощь с проектом в 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"? Или то, что запись без отступов и точек с запятой? Здесь, думаю, вообще надо благодарить, что не как индусы-программисты - весь код в одну строку Или то, что проверяется успешность операции присваивания "spawn = 1"? Ну здесь я даже не знаю - может так и задумано?) Вопрос исключительно ради интереса, без злого умысла.
Сообщение отредактировал 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 проще относится к невнимательности. Си таких ошибок не прощает Да и вообще, если нам надо проверить, что переменная не равна нулю, то достаточно написать:
А правила синтаксиса надо соблюдать не взирая на размер программы, потому как иначе эта самая программа, в лучшем случае просто не скомпилируется, в худшем - будет вести себя некорректно, а потом отлаживай её до посинения. Это же касается и оформления кода: это как хорошие манеры. Можно в повседневной жизни вести себя как быдло, а на все замечания отвечать: "Материться и харкаться перестану только тогда, когда буду в Палате Лордов или на приёме у английской Королевы." В общем, не хочу занудствовать, это личное дело каждого, просто когда делишься кодом с другими, то соблюдения хотя бы основного общепринятого стиля - это как некий признак уважения. Losiah, это не относится лично к тебе, я просто рассуждаю на заданную тему. Да и вообще, любая "программка", начинается с: "Здесь процедурку быстренько напишу, там цикл в функцию оберну..." и понеслось Ну в общем, вы понимаете...
|
|
| |
|