Нажатие на спрайт - что ему не нравится

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Нажатие на спрайт - что ему не нравится

Post by Dionis »

Всем добрый день. Решил уже серьезно (в 100 раз :mrgreen:) засесть за программирование. Пытаюсь сделать самое простое. Есть объект в виде спрайта. Есть 4 кнопки (стрелки вверх, вниз, влево, вправо). Все это вывел на экран, все ок. Далее нужно сделать, чтобы при нажатии на кнопки объект двигался в соответствующую сторону. Пытаюсь обработать нажатие на спрайт одной из кнопок. В мануале написано
SPRITE_HIT (n$, x,y)
возвращает 1 если точка с координатами [x], [y] попадает внутрь спрайта [n$]. Иначе возвращает 0.
То есть по логике получаем координаты касания - GET TOUCH 0 AS x,y и далее проверяем попали ли они внутрь спрайта 1 (это кнопка вниз) - IF SPRITE_HIT (1, x,y) = 1 THEN (... тут обработчик после нажатия кнопки). Получаю ошибку "Ошибка вычисления функции SPRITE_HIT". Где ошибка ?

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нажатие на спрайт - что ему не нравится

Post by Фант »

Привет! Номер спрайта берите в кавычки.
If sprite_hit("1",x,y)....

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нажатие на спрайт - что ему не нравится

Post by Mr. Kibernetik »

Вы пишете:

IF SPRITE_HIT (1, x,y)

а функция SPRITE_HIT() принимает имя спрайта в виде строки, а не числа. Функции не совершают автоматического конвертирования числа в строку в отличие от команд, где можно написать SPRITE 1 BEGIN и цифра 1 будет автоматически переконвертирована в строку "1".

У спрайта имя может быть любое, например SPRITE "up arrow" BEGIN.

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Ага, благодарю, сейчас попробую :) Мне вообще тяжело в этом плане после пхп. Я то == поставлю, то THEN забуду :mrgreen:

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Теперь с поворотами завис. Уже часа полтора сижу. Короче объект двигается туда сюда, тут все отлично. Но нужно, чтобы он поворачивался в соответствующую сторону. Я получаю его текущий угол - GET SPRITE "1" ANGLE current_angle. Но дальше мысль как-то не идет. По идее там, где происходит передвижение нужно дописать изменение угла - SPRITE n$ AT x,y SCALE s ANGLE a FLIP k, но как рассчитать на какую величину - тут я что-то теряюсь совсем.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нажатие на спрайт - что ему не нравится

Post by Фант »

поворот чего? Спрайта?
.....flip... это зеркальное отображение спрайта

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нажатие на спрайт - что ему не нравится

Post by Фант »

Если поворот только в 4 стороны, то здесь просто.
создавайте переменную для угла к примеру: sprite 1 at x,y angle ANG
при необходимомти повернуть спрайт добавляйте или уменьшайте 90 градусов: ANG+=90 или ANG-=90

Dionis
Posts: 47
Joined: Mon Jan 05, 2015 8:18 am
My devices: iPad2, iPad 4, iPad mini 2

Re: Нажатие на спрайт - что ему не нравится

Post by Dionis »

Тфу. Все, разобрался. Я думал, что ANgle поворачивает спрайт исходя из текущего угла. Т.е. если он повернут на 90 градусов, то поворачивает еще на 90 итого 180. Но оказалось, что поворот идет исходя из начального положения, то есть от нуля. Блин, а я долбался так долго :) Все работает.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нажатие на спрайт - что ему не нравится

Post by Фант »

Есть команда которая вычисляет угол спрайта. Можно использовать ее для выпполнения сложных поворотов
GET SPRITE N$ ANGLE X

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нажатие на спрайт - что ему не нравится

Post by Фант »

надеюсь с этим Вы разобрались?
OPTION ANGLE DEGREES
OPTION ANGLE RADIANS
заставляет все тригонометрические функции считать свои аргументы в градусах/радианах. Остальные функции и команды BASIC, которые используют углы в качестве параметров, также затрагиваются этими командами. По умолчанию считается в радианах.

Для расчета в градусах в начале кода надо задать OPTION ANGLE DEGREES

Post Reply