|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
<meta charset="UTF-8">
|
|
|
7a004b |
<link href="style.css" rel="stylesheet" type="text/css">
|
|
|
7a004b |
<title>Спрайты - Helianthus</title>
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Helianthus
|
|
|
7a004b |
Запуск и общие функции
|
|
|
7a004b |
Клавиатура и мышь
|
|
|
7a004b |
Рисование
|
|
|
7a004b |
Спрайты
|
|
|
7a004b |
Группы спрайтов
|
|
|
7a004b |
Камера
|
|
|
7a004b |
Звук
|
|
|
7a004b |
|
|
|
7a004b |
Все функции
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Спрайты
|
|
|
7a004b |
|
|
|
7a004b |
Спрайт — это изображаемый на экране объект, который сохраняет свою позицию и изображения от кадра к кадру. Другими словами для рисования спрайта не нужно каждый раз указывать его координаты, цвет и расположение — он хранит эти параметры внутри себя, их достаточно задать только один раз.
|
|
|
7a004b |
|
|
|
7a004b |
Спрайты будут выводится на экран командой drawSprites, она рисует на экране сразу все спрайт. Её достаточно вызвать только один раз за кадр.
|
|
|
7a004b |
|
|
|
7a004b |
Спрайт может изображаться в виде прямоугольника выбранного вами цвета (spriteSetShapeColor), либо в виде картинки из выбранного вами файла (spriteSetAnimation). Кроме того спрайт может содержать анимацию, для этого вместо одного изображения в него можно загрузить папку с картинками — кадрами. Эти кадры могут переключаться автоматически (spritePlay) или по вашей команде (spriteSetFrame, spriteNextFrame).
|
|
|
7a004b |
|
|
|
7a004b |
Положение спрайта задаётся координатами его центра (spriteSetX, spriteSetY), и углом поворота (spriteSetRotation). Кроме того вы можете задать ширину и высоту спрайта (spriteSetWidth, spriteSetHeight)
|
|
|
7a004b |
|
|
|
7a004b |
Создать спрайт можно функции createSprite, которая возвращает значение типа Sprite, которое по сути является адресом в памяти — указателем на описание спрайта внутри библиотеки Helianthus.
|
|
|
7a004b |
|
|
|
7a004b |
Пример:
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
#include <helianthus.h>
|
|
|
7a004b |
|
|
|
7a004b |
Sprite mysprite;
|
|
|
7a004b |
|
|
|
7a004b |
void init() {
|
|
|
7a004b |
// Создать новый спрайт с центром в точке (200, 200)
|
|
|
7a004b |
mysprite = createSprite(200, 200);
|
|
|
7a004b |
|
|
|
7a004b |
// Загрузить файл изображения.
|
|
|
7a004b |
spriteSetAnimation(mysprite, "picture.png");
|
|
|
7a004b |
}
|
|
|
7a004b |
|
|
|
7a004b |
void draw() {
|
|
|
7a004b |
// Повернуть спрайт на один 10 градусов перед рисованием.
|
|
|
7a004b |
spriteSetRotation(mysprite, 10);
|
|
|
7a004b |
|
|
|
7a004b |
// Вывести все спрайты на экран.
|
|
|
7a004b |
// Ввесь один спрайт, в данном случае.
|
|
|
7a004b |
drawSprites();
|
|
|
7a004b |
}
|
|
|
7a004b |
|
|
|
7a004b |
int main() {
|
|
|
7a004b |
worldSetInit(&init);
|
|
|
7a004b |
worldSetDraw(&draw);
|
|
|
7a004b |
worldRun();
|
|
|
7a004b |
return 0;
|
|
|
7a004b |
}
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Физика и обнаружение столкновений
|
|
|
7a004b |
|
|
|
7a004b |
Спрайты в библиотеке Helianthus имеют физическую модель. Они могут обладать скоростью и отталкиваться друг от друга.
|
|
|
7a004b |
|
|
|
7a004b |
Изначально физическое представление спрайта это прямоугольник соответствующий видимой форме спрайта. Но это может быть изменено, например, вы можете представить спрайт для физической модели в виде круга, при этом видимое изображение останется прежним (spriteSetCollider).
|
|
|
7a004b |
|
|
|
7a004b |
Физическое тело спрайта позволяет вам определять находится ли над спрайтом указатель мыши, см. функции mouseIsOver и mousePressedOver.
|
|
|
7a004b |
|
|
|
7a004b |
Помимо описания формы и размеров физического тела спрайта вам, скорее всего, понадобится задать и его скорость (spriteSetVelocityXY).
|
|
|
7a004b |
|
|
|
7a004b |
Для обнаружения столкновений и расчёта скоростей и позиций объектов после столкновения необходимо запустить одну из специальных функций. Они представлены в таблице ниже. Каждая из этих функций работает с двумя выбранными вами спрайтами и рассчитывает столкновения только между ними.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Имя функции
|
|
|
7a004b |
Первый спрайт сохраняет свою скорость?
|
|
|
7a004b |
Второй спрайт сохраняет свою скорость?
|
|
|
7a004b |
Описание
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
spriteOverlap
|
|
|
7a004b |
Да.
|
|
|
7a004b |
Да.
|
|
|
7a004b |
Спрайты проходят друг через друга, функция просто сообщает вам о факте касания.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
spriteCollide
|
|
|
7a004b |
Нет.
|
|
|
7a004b |
Нет.
|
|
|
7a004b |
Спрайты отталкиваются друг от друга — обычное столкновение двух объектов
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
spriteBounceOff
|
|
|
7a004b |
Нет.
|
|
|
7a004b |
Да.
|
|
|
7a004b |
Первый спрайт отталкивается от второго, второй же продолжает своё движение так, словно ничего не было.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
spritePush
|
|
|
7a004b |
Да.
|
|
|
7a004b |
Нет.
|
|
|
7a004b |
Первый сайт движется так будто и не было столкновения, второй же отталкивается от первого и меняет свою скорость и направление движения.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
spriteCollideEx
|
|
|
7a004b |
Задаётся параметрами функции.
|
|
|
7a004b |
Задаётся параметрами функции.
|
|
|
7a004b |
Это универсальная функция, которая вмещает в себя возможности предыдущих четырёх функций.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
Также указанные функции (кроме spriteOverlap) имеют параметр bounciness — это показатель энергии столкновения.
|
|
|
7a004b |
|
|
|
7a004b |
Если bounciness меньше 1, то взаимная скорость спрайтов после столкновения уменьшится, как если бы столкнулись мешки с песком.
|
|
|
7a004b |
|
|
|
7a004b |
Если больше 1, то скорости после столкновения увеличатся. Можете представить себе супер-упругий волшебный мячик, который после падения на пол подпрыгивает выше чем падал.
|
|
|
7a004b |
|
|
|
7a004b |
Параметр bounciness есть и у каждого спрайта (spriteSetBounciness). При расчёте параметры bounciness от обоих спрайтов и параметр bounciness из функции перемножаются и получается окончательное значение bounciness для расчётов.
|
|
|
7a004b |
|
|
|
7a004b |
Таким образом запустив, например, функцию spritePush для двух ваших спрайтов вы тем самым инициируете расчёт физического взаимодействия межу ними. И кроме того вы одновременно с этим указываете какую роль в физической модели занимает ваш объект. Например для spritePush первый спрайт будет представлять из себя какую-то тяжёлую мощную платформу, сдвинуть которую второй спрайт не может — он просто отталкивается от неё сам, а платформа двигается (или стоит) как ни в чём ни бывало.
|
|
|
7a004b |
|
|
|
7a004b |
Однако работы всего лишь с двумя спрайтами мало для полноценной физической модели. В помощь вам Helianthus предлагает группы спрайтов. Поместив свои спрайты в различные группы (или в одну группу) вы можете одной командой вызвать расчёт столкновений между всеми спрайтами в группе или между спрайтами одной группы со спрайтами другой группы или между группой и одиночным спрайтом.
|
|
|
7a004b |
|
|
|
7a004b |
Также функция createEdgesGroup поможет вам создать группу спрайтов обозначающую границы экрана, чтобы ваши объекты отталкивались от краёв экрана.
|
|
|
7a004b |
|
|
|
7a004b |
Подробнее о группах и их функциях смотрите в разделе «Группы спрайтов».
|
|
|
7a004b |
|
|
|
7a004b |
Функции:
|
|
|
7a004b |
|
|
|
7a004b |
Sprite createSprite(double x, double y);
|
|
|
7a004b |
|
|
|
7a004b |
Создаёт спрайт с центром в указанной точке. См. также createSpriteEx.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
x, y — координаты центра нового спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
Sprite createSpriteEx(double x, double y, double width, double height);
|
|
|
7a004b |
|
|
|
7a004b |
Создаёт спрайт заданного размера с центром в указанной точке. См. также createSprite.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
x, y — координаты центра нового спрайта;
|
|
|
7a004b |
width — ширина нового спрайта;
|
|
|
7a004b |
height — высота нового спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteDestroy(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Удаляет спрайт. Спрайт удаляется также из всех групп в которые он был включён.
|
|
|
7a004b |
|
|
|
7a004b |
Если же вы просто хотите спрятать спрайт не удаляя его, чтобы он просто больше не отображался на экране, то обратите внимание на функцию spriteSetVisible.
|
|
|
7a004b |
|
|
|
7a004b |
Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на спрайт. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на спрайт, спрайт удалён. Вы можете занести в эту переменную другой спрайт, но использовать старое значение переменной больше нельзя это приведёт у ошибкам и непредсказуемому поведению программы.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteDestroyTimer(Sprite sprite, double lifetime);
|
|
|
7a004b |
|
|
|
7a004b |
Задаёт таймер для удаления спрайта через определённое время. Рекомендуется больше не обращаться в к этому спрайту из вашей программы и не хранить указатель на него. Так как неизвестно существует ли спрайт ещё или уже сработал таймер удаления. Смотрите также функцию spriteDestroy и примечание к ней.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
lifetime — время в секундах по истечении которого спрайт должен быть удалён. Если 0 или меньше, то спрайт будет удалён немедленно. Если больше 0, то спрайт будет в один из промежутков между вызовами функции перерисовки кадра.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetX(Sprite sprite);
|
|
|
7a004b |
double spriteGetY(Sprite sprite);
|
|
|
7a004b |
void spriteSetX(Sprite sprite, double x);
|
|
|
7a004b |
void spriteSetY(Sprite sprite, double y);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) либо задать (Set) координаты центра спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetVelocityX(Sprite sprite);
|
|
|
7a004b |
double spriteGetVelocityY(Sprite sprite);
|
|
|
7a004b |
void spriteSetVelocityX(Sprite sprite, double x);
|
|
|
7a004b |
void spriteSetVelocityY(Sprite sprite, double y);
|
|
|
7a004b |
void spriteSetVelocityXY(Sprite sprite, double x, double y);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) либо задать (Set) координаты вектора скорости спрайта. См. также spriteSetSpeedAndDirection.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetSpeedAndDirection(Sprite sprite, double speed, double angle);
|
|
|
7a004b |
|
|
|
7a004b |
Задать скорость спрайта через угол направления и абсолютное значение скорости. Если вы не понимаете смысла слов «абсолютное значение», то в здесь подразумевается обычное бытовое значение смысла слова скорость. В данном случае она измеряется в пикселях в секунду.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
speed — абсолютное значение скорости;
|
|
|
7a004b |
angle — угол направления движения в градусах. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteSetRotation, spriteSetRotateToDirection).
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetSpeed(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает абсолютное значение скорости спрайта. См. также spriteSetSpeedAndDirection.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetDirection(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает направление движения в градусах. См. также spriteSetSpeedAndDirection. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteGetRotation).
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetWidth(Sprite sprite);
|
|
|
7a004b |
void spriteSetWidth(Sprite sprite, double width);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) либо задать (Set) ширину спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetHeight(Sprite sprite);
|
|
|
7a004b |
void spriteSetHeight(Sprite sprite, double height);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) либо задать (Set) высоту спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetScale(Sprite sprite);
|
|
|
7a004b |
void spriteSetScale(Sprite sprite, double scale);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) либо задать (Set) масштабирование спрайта. Вы можете увеличить ли уменьшить весь спрайт и его физическое тело с сохранением всех пропорций. См. также spriteGetScaledWidth, spriteGetScaledHeight.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetScaledWidth(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает ширину спрайта с учётом масштабирования. См. также spriteSetScale.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetScaledHeight(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает высоту спрайта с учётом масштабирования. См. также spriteSetScale.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetRotation(Sprite sprite);
|
|
|
7a004b |
void spriteSetRotation(Sprite sprite, double rotation);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) поворот спрайта. Не путайте, пожалуйста, с направлением движения спрайта. См. также spriteSetSpeedAndDirection, spriteSetRotateToDirection, spritePointTo.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetRotationSpeed(Sprite sprite);
|
|
|
7a004b |
void spriteSetRotationSpeed(Sprite sprite, double rotationSpeed);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) скорость вращения спрайта. Да, спрайт имеет ещё и скорость вращения. Вы можете её задать в градусах в секунду и спрайт будет вращаться сам. См. также spriteSetRotation.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetRotateToDirection(Sprite sprite);
|
|
|
7a004b |
void spriteSetRotateToDirection(Sprite sprite, int rotateToDirection);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) автоматический поворот спрайта вдоль направления движения. rotateToDirection может принимать значение TRUE (число 1) или FALSE (число 0).
|
|
|
7a004b |
|
|
|
7a004b |
Когда rotateToDirection равно TRUE, спрайт будет автоматически поворачиваться в направлении своего движения (вектора скорости). См. также spriteSetSpeedAndDirection, spriteSetRotation.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetMirrorX(Sprite sprite);
|
|
|
7a004b |
void spriteSetMirrorX(Sprite sprite, int mirrorX);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) отражение спрайта по оси X.
|
|
|
7a004b |
Если mirrorX больше или равно 0, то спрайт рисуется как обычно.
|
|
|
7a004b |
Если mirrorX меньше нуля то рисуется зеркальное отражение спрайта по горизонтали.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetMirrorY(Sprite sprite);
|
|
|
7a004b |
void spriteSetMirrorY(Sprite sprite, int mirrorY);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) отражение спрайта по оси Y.
|
|
|
7a004b |
Если mirrorY больше или равно 0, то спрайт рисуется как обычно.
|
|
|
7a004b |
Если mirrorY меньше нуля то рисуется зеркальное отражение спрайта по вертикали.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetDepth(Sprite sprite);
|
|
|
7a004b |
void spriteSetDepth(Sprite sprite, double depth);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) показатель глубины спрайта. На переднем плане рисуются спрайты с наименьшим значением глубины, на заднем — с наибольшим. Таким образом задавая глубину спрайтов вы определяете порядок их отрисовки.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetVisible(Sprite sprite);
|
|
|
7a004b |
void spriteSetVisible(Sprite sprite, int visible);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) видимость спрайта. Может принимать значение TRUE (число 1) — спрайт видно, или FALSE (число 0) — спрайт спрятан.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetTag(Sprite sprite);
|
|
|
7a004b |
void spriteSetTag(Sprite sprite, int tag);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любое число которое хотите связать с данным спрайтом.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteGetDebug(Sprite sprite);
|
|
|
7a004b |
void spriteSetDebug(Sprite sprite, int debug);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) отображение отладочной информации для данного спрайта. Может принимать значение TRUE (число 1) — включено, или FALSE (число 0) — выключено.
|
|
|
7a004b |
|
|
|
7a004b |
Когда включено, для данного спрайта рисуется его рамка, центр и значение глубины, даже если спрайт невидим.
|
|
|
7a004b |
|
|
|
7a004b |
Если в вашей программе что-то пошло не так, включите эту опцию для ваших спрайтов, возможно вы увидите причину ошибки.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteOverlap(Sprite a, Sprite b);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает TRUE если спрайты касаются или накладываются друг на друга. В противном случае возвращает FALSE.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteCollide(Sprite a, Sprite b, double bounciness);
|
|
|
7a004b |
|
|
|
7a004b |
Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
bounciess — показатель энергии столкновения.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteBounceOff(Sprite sprite, Sprite other, double bounciness);
|
|
|
7a004b |
|
|
|
7a004b |
Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новую скорость и позицию для спрайта sprite (спрайт other не меняет своих параметров) и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
bounciess — показатель энергии столкновения.
|
|
|
7a004b |
|
|
|
7a004b |
int spritePush(Sprite sprite, Sprite other, double bounciness);
|
|
|
7a004b |
|
|
|
7a004b |
Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новую скорость и позицию для спрайта other (спрайт sprite не меняет своих параметров) и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
bounciess — показатель энергии столкновения.
|
|
|
7a004b |
|
|
|
7a004b |
int spriteCollideEx(Sprite a, Sprite b, int keepVelocityA, int keepVelocityB, double bounciness);
|
|
|
7a004b |
|
|
|
7a004b |
Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
bounciess — показатель энергии столкновения;
|
|
|
7a004b |
keepVelocityA — если TRUE то спрайт a не меняет своих параметров и продолжает движение, так будто столкновения не было;
|
|
|
7a004b |
keepVelocityB — если TRUE то спрайт b не меняет своих параметров и продолжает движение, так будто столкновения не было.
|
|
|
7a004b |
|
|
|
7a004b |
double spriteGetBounciness(Sprite sprite);
|
|
|
7a004b |
void spriteSetBounciness(Sprite sprite, double bounciness);
|
|
|
7a004b |
|
|
|
7a004b |
Получить (Get) или задать (Set) показатель энергии столкновения для данного спрайта. См. описание физической модели в разделе «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetCollider(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset);
|
|
|
7a004b |
|
|
|
7a004b |
Устанавливает параметры физического тела спрайта. Размеры тела определяются размерами самого спрайта. Для круга диаметр равен ширине спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
|
|
|
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
|
7a004b |
rotationOffset — поворот физического тела относительно спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetColliderCircle(Sprite sprite, double xOffset, double yOffset, double radius);
|
|
|
7a004b |
|
|
|
7a004b |
Задать физическое тела спрайта в виде круга.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
|
7a004b |
radius — радиус круга, если меньше 0, то будет использоваться половина от ширины спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetColliderRectangle(Sprite sprite, double xOffset, double yOffset, double rotationOffset, double width, double height, double cornersRadius);
|
|
|
7a004b |
|
|
|
7a004b |
Задать физическое тела спрайта в виде прямоугольника. Прямоугольник может быть со скруглёнными углами.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
|
7a004b |
rotationOffset — поворот физического тела относительно спрайта;
|
|
|
7a004b |
width — ширина прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
|
|
|
7a004b |
height — высота прямоугольника, если меньше 0, то будет использоваться высота спрайта;
|
|
|
7a004b |
cornersRadius — радиус скругления углов.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetColliderEx(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset, double width, double height, double radius);
|
|
|
7a004b |
|
|
|
7a004b |
Устанавливает полный набор параметров физического тела спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
|
|
|
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
|
7a004b |
rotationOffset — поворот физического тела относительно спрайта;
|
|
|
7a004b |
width — ширина, используется только для прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
|
|
|
7a004b |
height — высота, используется только для прямоугольника, если меньше 0, то будет использоваться высота спрайта;
|
|
|
7a004b |
radius — для круга — его радиус, для прямоугольника — радиус скругления углов.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetAnimation(Sprite sprite, const char *path);
|
|
|
7a004b |
|
|
|
7a004b |
Задать файл изображения или анимации спрайта. Поддерживаются изображения в формате PNG. Если вместо файла указана папка, то из неё загружаются все файлы PNG в алфавитном порядке — анимация спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
path — путь к файлу PNG или к папке с фалами PNG для анимации.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetNoAnimation(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Убрать анимацию и изображение со спрайта — спрайт будет рисоваться в виде простого прямоугольника.
|
|
|
7a004b |
|
|
|
7a004b |
void spritePlay(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Включить воспроизведение анимации для спрайта. При каждом вызове функции перерисовки окна будет переключаться кадр. Частоту перерисовки окна, а следовательно и частоту кадров для анимации спрайтов, можно задать функцией worldSetFrameRate. См. также spritePause.
|
|
|
7a004b |
|
|
|
7a004b |
void spritePause(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Остановить анимацию спрайта. См. также spritePlay.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteNextFrame(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Перейти к следующему кадру анимации. Если это был последний кадр, то перейти к первому (точнее к нулевому).
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetFrame(Sprite sprite, int frame);
|
|
|
7a004b |
|
|
|
7a004b |
Перейти к кадру с заданным номером.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
frame - номер кадра, кадры нумеруются начиная с нуля.
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetShapeColor(Sprite sprite, const char *color);
|
|
|
7a004b |
|
|
|
7a004b |
Установить цвет прямоугольника спрайта. Только для спрайтов у которых нет изображения или анимации.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
color — текстовое наименование цвета, см. раздел «Рисование».
|
|
|
7a004b |
|
|
|
7a004b |
void spriteSetTintColor(Sprite sprite, const char *color);
|
|
|
7a004b |
|
|
|
7a004b |
Установить цвет подкрашивания спрайта. Компоненты указанного цвета умножаются на компоненты цвета изображения (или базового прямоугольника) спрайта. Таким образом вы можете немного менять цвета в спрайте, а также устанавливать общую прозрачность спрайта.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
color — текстовое наименование цвета, см. раздел «Рисование».
|
|
|
7a004b |
|
|
|
7a004b |
void spritePointTo(Sprite sprite, double x, double y);
|
|
|
7a004b |
|
|
|
7a004b |
Повернуть спрайт по направлению к указанной точке. См. также spriteSetRotation.
|
|
|
7a004b |
|
|
|
7a004b |
Параметры:
|
|
|
7a004b |
|
|
|
7a004b |
x, y — координаты точки.
|
|
|
7a004b |
|
|
|
7a004b |
int mouseIsOver(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
int mousePressedOver(Sprite sprite);
|
|
|
7a004b |
|
|
|
7a004b |
Функция возвращает TRUE (число 1) если любая кнопка мыши нажата (и удерживается) в то время как указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».
|
|
|
7a004b |
|
|
|
7a004b |
int worldGetSpriteCount();
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает количество спрайтов существующих в программе в данный момент. См. также worldGetSprite.
|
|
|
7a004b |
|
|
|
7a004b |
Sprite worldGetSprite(int i);
|
|
|
7a004b |
|
|
|
7a004b |
Возвращает спрайт по указанному номеру. См. также worldGetSpriteCount.
|
|
|
7a004b |
|
|
|
7a004b |
void drawSprites();
|
|
|
7a004b |
|
|
|
7a004b |
Вывести все спрайты на экран.
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|
|
|
7a004b |
|