Blame doc/ru/sprites.html

7a004b
7a004b
7a004b
<meta charset="UTF-8">
7a004b
<link href="style.css" rel="stylesheet" type="text/css">
7a004b
<title>Спрайты - Helianthus</title>
7a004b
7a004b
7a004b
77a314
  

Helianthus

77a314
  
77a314
  

Helianthus: Документация

77a314
  

Установка

7a004b
  

Запуск и общие функции

7a004b
  

Клавиатура и мышь

7a004b
  

Рисование

cece70
  

Шрифты и текст

cece70
  

Текстуры и анимация

cece70
  

Буфер кадра

7a004b
  

Спрайты

7a004b
  

Группы спрайтов

7a004b
  

Звук

e9aada
  

Пользовательский интерфейс

7a004b
  
7a004b
  

Все функции

7a004b
7a004b
7a004b
7a004b

Спрайты

7a004b
7a004b

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

7a004b
cece70

Спрайты будут выводится на экран командой drawSprites, она рисует на экране сразу все спрайты. Её достаточно вызвать только один раз за кадр.

7a004b
cece70

Спрайт может изображаться в виде прямоугольника выбранного вами цвета (spriteSetShapeColor), либо в виде картинки или анимации из выбранного вами файла (spriteSetAnimation).

7a004b
cece70

Положение спрайта задаётся координатами его центра (spriteSetX, spriteSetY, spriteSetXY), и углом поворота (spriteSetRotation). Кроме того вы можете задать ширину и высоту спрайта (spriteSetWidth, spriteSetHeight, spriteSetSize).

7a004b
a32bcc

Создать спрайт можно функцией createSprite, которая возвращает значение типа Sprite, которое по сути является адресом в памяти — указателем на описание спрайта внутри библиотеки Helianthus.

7a004b
7a004b

Пример:

7a004b
7a004b
7a004b
#include <helianthus.h>
7a004b
7a004b
Sprite mysprite;
cece70
Animation myanimation;
7a004b
7a004b
void init() {
d38577
    // Создать новый спрайт размером 100x100
d38577
    // с центром в точке (200, 200)
d38577
    mysprite = createSprite(200, 200, 100, 100);
7a004b
cece70
    // Загрузить файл изображения и назначить его нашему спрайту
cece70
    myanimation = createAnimation("picture.png");
cece70
    spriteSetAnimation(mysprite, myanimation);
7a004b
}
7a004b
7a004b
void draw() {
a32bcc
    // Повернуть спрайт на 10 градусов перед рисованием.
a32bcc
    double r = spriteGetRotation(mysprite);
a32bcc
    spriteSetRotation(mysprite, r + 10);
7a004b
7a004b
    // Вывести все спрайты на экран.
a32bcc
    // Весь один спрайт, в данном случае.
7a004b
    drawSprites();
7a004b
}
7a004b
7a004b
int main() {
d38577
    windowSetInit(&init);
d38577
    windowSetDraw(&draw);
d38577
    windowRun();
7a004b
    return 0;
7a004b
}
7a004b
7a004b
7a004b
7a004b

Физика и обнаружение столкновений

7a004b
7a004b

Спрайты в библиотеке Helianthus имеют физическую модель. Они могут обладать скоростью и отталкиваться друг от друга.

7a004b
7a004b

Изначально физическое представление спрайта это прямоугольник соответствующий видимой форме спрайта. Но это может быть изменено, например, вы можете представить спрайт для физической модели в виде круга, при этом видимое изображение останется прежним (spriteSetCollider).

7a004b
cece70

Физическое тело спрайта позволяет вам определять находится ли какая-либо точка внутри спрайта, см. функцию spriteIsPointInside.

cece70
cece70

Помимо описания формы и размеров физического тела спрайта вам, скорее всего, понадобится задать и его скорость и ускорение (spriteSetVelocityXY, spriteSetAccelerationXY).

cece70
cece70

Также вы можете задать уровень массы спрайта. Спрайты имеют упрощённую физическую модель и считается что масса всех спрайтов с одинаковым уровнем массы одинакова. Однако, если уровень массы спрайтов отличается, то считается что масса объекта с большим уровнем настолько велика, что другой спрайт не может повлиять на скорость и направление движение первого. То есть для спрайта с меньшим уровнем массы, другой спрайт представляет из себя стену, он может оттолкнуться от неё, но сдвинуть не может.

cece70
cece70

Таким образом физическая модель либо рассчитывает столкновения двух спрайтов считая их массы равными и они на равных воздействуют друг на друга. Либо считает их массы считаются несоизмеримыми и спрайт с меньшим уровнем просто отталкивается от спрайта с большим уровнем ни как не влияя на его скорость. Всего два варианта, вот такая упрощенная модель.

cece70
cece70

Для обнаружения столкновений между двумя спрайтами и расчёта их скоростей и позиций после столкновения необходимо запустить функцию spriteCollide. Если вы хотите всего лишь определить касаются спрайты друг друга или нет, то вам достаточно вызвать функцию spriteOverlap.

cece70
cece70

Также вы можете задать коэффициент трения спрайта (spriteSetFriction), он будет использоваться когда один спрайт скользит по другому. Трение будет приводить к замедлению движения. По-умолчанию трения нет.

cece70
cece70

Функция spriteSetAirFriction задаёт силу трения о воздух (по умолчанию 0).

cece70
cece70

Физическая модель спрайта также имеет параметр отскок или bounciness (spriteSetBounciness), который показывает насколько сильно спрайты отскакивают друг от друга при столкновении. Если bounciness равен единице (значение по-умолчанию), то спрайты отталкиваются без потерь кинетической энергии, но и без её увеличения. Если bounciness меньше одного, то спрайты при столкновении теряют энергию и замедляются. Если bounciness больше одного, то спрайты отлетают друг от друга с увеличенными скоростями (как отталкивающие стержни в пинболе). Так как в столкновении участвуют два спрайта и у каждого из них своё значение bounciness, эти величины перемножаются при вычислении окончательной силы отскока.

cece70
cece70

Вы можете задать ещё и порог скорости отскакивания для спрайта - spriteSetBouncinessThreshold. Это значение будет вычтено из скорости спрайта после отскока, если точнее то будет применено среднее значение порога для двух столкнувшихся спрайтов. Таким образом столкновение может полностью поглотить энергию взаимного движения и спрайтов и они продолжат движение вместе с одинаковой скоростью в одном направлении или вовсе остановятся.

cece70
cece70

После расчёта столкновений вы можете узнать вектор веса действующего на спрайт и действующую силу трения (spriteGetTouchWeight, spriteGetTouchWeightX, spriteGetTouchWeightY, spriteGetTouchFriction). Эти параметры будут сброшены в нулевые значения автоматически в промежутке между вызовами функции перерисовки кадра. Вы можете сбросить их вручную функцией spriteResetTouch. Расчёт этих параметров зависит от порога касания спрайтов — это тонкая настройка физической модели и обычно вам не требуется её менять (см. функцию spriteSetColliderSensitiveDistance).

cece70
cece70

Однако, работы всего лишь с двумя спрайтами мало для полноценной физической модели. В помощь вам Helianthus предлагает группы спрайтов. Поместив свои спрайты в различные группы (или в одну группу) вы можете одной командой вызвать расчёт столкновений между всеми спрайтами в группе или между спрайтами одной группы со спрайтами другой группы или между группой и одиночным спрайтом.

7a004b
7a004b

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

7a004b
acc470

Подробнее о группах и их функциях смотрите в разделе «Группы спрайтов».

7a004b
7a004b

Функции:

7a004b
d38577

Sprite createSprite(double x, double y, double width, double height);

7a004b
d38577

Создаёт спрайт заданного размера с центром в указанной точке. См. также createSpriteEx.

7a004b
7a004b

Параметры:

7a004b
d38577

x, y — координаты центра нового спрайта;

d38577
width — ширина нового спрайта;
d38577
height — высота нового спрайта.

7a004b
d38577

Sprite createSpriteEx(double x, double y, double width, double height, Animation animation);

7a004b
d38577

Создаёт спрайт заданного размера с центром в указанной точке с указанием анимации (текстуры). См. также createSprite, spriteSetAnimation, createAnimation.

7a004b
7a004b

Параметры:

7a004b
7a004b

x, y — координаты центра нового спрайта;

7a004b
width — ширина нового спрайта;
d38577
height — высота нового спрайта;
d38577
animation — анимация для нового спрайта.

7a004b
7a004b

void spriteDestroy(Sprite sprite);

7a004b
7a004b

Удаляет спрайт. Спрайт удаляется также из всех групп в которые он был включён.

7a004b
7a004b

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

7a004b
7a004b

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

7a004b
7a004b

void spriteDestroyTimer(Sprite sprite, double lifetime);

7a004b
cece70

Задаёт таймер для удаления спрайта через определённое время. Рекомендуется больше не обращаться к этому спрайту из вашей программы и не хранить указатель на него. Так как неизвестно существует ли спрайт ещё или уже сработал таймер удаления. Смотрите также функцию spriteDestroy и примечание к ней.

7a004b
7a004b

Параметры:

7a004b
7a004b

lifetime — время в секундах по истечении которого спрайт должен быть удалён. Если 0 или меньше, то спрайт будет удалён немедленно. Если больше 0, то спрайт будет в один из промежутков между вызовами функции перерисовки кадра.

7a004b
cece70

Sprite spriteClone(Sprite sprite);

cece70
cece70

Создать точную копию спрайта.

cece70
7a004b

double spriteGetX(Sprite sprite);

7a004b

double spriteGetY(Sprite sprite);

7a004b

void spriteSetX(Sprite sprite, double x);

7a004b

void spriteSetY(Sprite sprite, double y);

cece70

void spriteSetXY(Sprite sprite, double x, 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
cece70

double spriteGetAccelerationX(Sprite sprite);

cece70

void spriteSetAccelerationX(Sprite sprite, double x);

cece70

double spriteGetAccelerationY(Sprite sprite);

cece70

void spriteSetAccelerationY(Sprite sprite, double y);

cece70

void spriteSetAccelerationXY(Sprite sprite, double x, double y);

cece70
cece70

Получить (Get) либо задать (Set) координаты вектора ускорения спрайта.

cece70
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
cece70

void spriteSetSize(Sprite sprite, double width, double height);

cece70
cece70

Задать ширину и высоту спрайта одной командой.

cece70
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

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
cece70

int spriteGetFrozen(Sprite sprite);

cece70

void spriteSetFrozen(Sprite sprite, int frozen);

cece70
cece70

Получить (Get) или задать (Set) «замороженность» спрайта. Может принимать значение TRUE (число 1) — спрайт заморожен, или FALSE (число 0) — спрайт в обычном состоянии.

cece70
cece70

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

cece70
cece70

int spriteGetUserTag(Sprite sprite);

cece70

void spriteSetUserTag(Sprite sprite, int tag);

7a004b
cece70

Получить (Get) или задать (Set) числовую метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любое число которое хотите связать с данным спрайтом.

cece70
cece70

const char* spriteGetUserText(Sprite sprite);

cece70

void spriteSetUserText(Sprite sprite, const char *text);

cece70
cece70

Получить (Get) или задать (Set) текстовую метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любой текст которые хотите связать с данным спрайтом. Спрайт создаёт и хранит внутри себя копию данного текста.

cece70
cece70

void* spriteGetUserData(Sprite sprite);

cece70

void spriteSetUserData(Sprite sprite, void *data);

cece70
cece70

Получить (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
cece70

int spriteCollide(Sprite a, Sprite b);

7a004b
acc470

Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».

7a004b
cece70

int spriteIsPointInside(Sprite sprite, double x, double y);

7a004b
cece70

Проверить попадает ли указанная точка в физическое тело спрайта. Функция возвращает TRUE если попадает и FALSE если нет.

7a004b
7a004b

Параметры:

7a004b
cece70

x, y — координаты точки.

7a004b
cece70

double spriteGetTouchWeight(Sprite sprite);

7a004b
cece70

Получить скалярное значение силы (веса) действующей на спрайт со стороны других толкающих его спрайтов. Так как используется упрощённая физическая модель и все массы либо равны либо несоизмеримы, то сила эквивалентна потенциальному ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeightX, spriteGetTouchWeightY, spriteResetTouch.

7a004b
cece70

double spriteGetTouchWeightX(Sprite sprite);

cece70

double spriteGetTouchWeightY(Sprite sprite);

7a004b
cece70

Получить вектор силы действующей на спрайт со стороны других толкающих его спрайтов. Так как используется упрощённая физическая модель и все массы либо равны либо несоизмеримы, то сила эквивалентна потенциальному ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeight, spriteResetTouch.

7a004b
cece70

double spriteGetTouchFriction(Sprite sprite);

7a004b
cece70

Получить значение силы трения спрайт о соприкасающиеся с ним спрайты. Возвращаемое значение эквивалентно ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeight, spriteResetTouch.

7a004b
cece70

void spriteResetTouch(Sprite sprite);

7a004b
cece70

Сбросить в ноль накопленные значения веса (spriteGetTouchWeight) и трения (spriteGetTouchFriction) столкновений. Эта функция вызывается автоматически между вызовами функции перерисовки кадра.

7a004b
7a004b

double spriteGetBounciness(Sprite sprite);

7a004b

void spriteSetBounciness(Sprite sprite, double bounciness);

7a004b
cece70

Получить (Get) или задать (Set) показатель энергии столкновения (силы отскока) для данного спрайта. См. описание физической модели в разделе «Спрайты».

cece70
cece70

double spriteGetBouncinessThreshold(Sprite sprite);

cece70

void spriteSetBouncinessThreshold(Sprite sprite, double bouncinessThreshold);

cece70
cece70

Получить (Get) или задать (Set) порог скорости отскакивания для спрайта. Это значение (среднее арифметическое для двух столкнувшихся спрайтов) будет вычтено из скорости спрайта после отскока. Таким образом столкновение может полностью поглотить энергию взаимного движения и спрайтов. См. описание физической модели в разделе «Спрайты».

cece70
cece70

double spriteGetFriction(Sprite sprite);

cece70

void spriteSetFriction(Sprite sprite, double friction);

cece70
cece70

Получить (Get) или задать (Set) порог коэффициент трения для спрайта. См. описание физической модели в разделе «Спрайты».

cece70
cece70

double spriteGetAirFriction(Sprite sprite);

cece70

void spriteSetAirFriction(Sprite sprite, double friction);

cece70
cece70

Получить (Get) или задать (Set) порог трения о воздух для спрайта. Определяет скорость замедления спрайта в единицах расстояния на секунду в квадрате. См. описание физической модели в разделе «Спрайты».

cece70
cece70

int spriteGetMassLevel(Sprite sprite);

cece70

void spriteSetMassLevel(Sprite sprite, int massLevel);

cece70
cece70

Получить (Get) или задать (Set) уровень массы спрайта. По-умолчанию — 0, может быть как отрицательным так и положительным. Это сравнительная характеристика, то есть не имеет значение насколько уровень одного спрайта превосходит уровень второго, а важен только сам факт превосходства. Больший уровень массы показывает, что спрайт с меньшим уровнем не может сдвинуть с места спрайт с большим уровнем — их масса считается несоизмеримой. См. описание физической модели в разделе «Спрайты».

cece70
cece70

double spriteGetColliderSensitiveDistance(Sprite sprite);

cece70

void spriteSetColliderSensitiveDistance(Sprite sprite, double distance);

cece70
cece70

Получить (Get) или задать (Set) порог касания для спрайта. Если спрайты находятся друг другу ближе чем на их суммарный порог касания, но при этом их физические тела не пересекаются, то считается что спрайты касаются друг друга. Это означает, что они создают друг другу силу трения и вес, но при этом не происходит отскакивания — скорости спрайтов не меняются. Значение по-умолчанию 0,001 — обычно этого хватает. Если размер ваших спрайтов меньше 0,01 или больше 1000, то вам нужно будет изменить значение порога касания. См. также описание физической модели в разделе «Спрайты».

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
cece70

xOffset, yOffset — смещение центра физического тела относительно центра спрайта;

cece70
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
cece70

Animation spriteGetAnimation(Sprite sprite);

cece70

void spriteSetAnimation(Sprite sprite, Animation animation);

7a004b
cece70

Получить (Get) или задать (Set) анимацию для спрайта. Значение NULL означает отсутствие анимации. См. также раздел «Текстуры и анимация».

7a004b
7a004b

void spriteSetNoAnimation(Sprite sprite);

7a004b
cece70

Убрать анимацию спрайта — спрайт будет рисоваться в виде простого прямоугольника. Эквивалентно вызову spriteSetAnimation(sprite, NULL).

7a004b
cece70

unsigned int spriteGetShapeColor(Sprite sprite);

cece70

void spriteSetShapeColor(Sprite sprite, unsigned int colorCode);

7a004b
cece70

Получить (Get) или задать (Set) цвет прямоугольника спрайта. Применяется только если у спрайте нет анимации (см. spriteSetAnimation). Информацию о работе цветом смотрите в разделе «Рисование».

7a004b
cece70

unsigned int spriteGetTintColor(Sprite sprite);

cece70

void spriteSetTintColor(Sprite sprite, unsigned int colorCode);

7a004b
cece70

Получить (Get) или задать (Set) цвет подкрашивания спрайта. Компоненты указанного цвета умножаются на компоненты цвета изображения (анимации) или базового прямоугольника спрайта. Таким образом вы можете немного менять цвета в спрайте, а также устанавливать общую прозрачность спрайта. Информацию о работе цветом смотрите в разделе «Рисование».

7a004b
cece70

void spritePointTo(Sprite sprite, double x, double y);

7a004b
cece70

Повернуть спрайт по направлению к указанной точке. См. также spriteSetRotation.

7a004b
7a004b

Параметры:

7a004b
cece70

x, y — координаты точки.

7a004b
cece70

void spriteMoveBy(Sprite sprite, double dx, double dy);

7a004b
cece70

Сдвинуть спрайт относительно его текущего положения на заданное расстояние по горизонтали и вертикали. См. также spriteSetXY, spriteMoveToDirection.

7a004b
7a004b

Параметры:

7a004b
cece70

dx, dy — координаты вектора перемещения.

7a004b
cece70

void spriteMoveToDirection(Sprite sprite, double distance, double angle);

7a004b
cece70

Сдвинуть спрайт на заданное расстояние в указанном направлении. См. также spriteMoveBy.

7a004b
7a004b

Параметры:

7a004b
cece70

distance — растояние;

cece70
angle — угол в градусах указывающий направление перемещения.

7a004b
cece70

void spriteSetDestroy(Sprite sprite, SpriteCallback destroy);

7a004b
cece70

Установить указатель функцию, которая будет вызвана при удалении спрайта. Это может вам пригодиться когда спрайт удаляется автоматически функцией spriteDestroyTimer или когда к спрайту привязаны пользовательские данные (spriteSetUserData) которые нужно удалить вместе со спрайтом. Ваша функция должна принимать один аргумент типа Sprite и не возвращать значения (void). Чтобы отключить обратный вызов передайте NULL вместо указателя на функцию.

7a004b
7a004b

Параметры:

7a004b
cece70

destroy — указатель на функцию; функция должна принимать один аргумент типа Sprite и ничего не возвращать (тип возвращаемого значения: void).

7a004b
cece70

void spriteDraw(Sprite sprite);

7a004b
cece70

Нарисовать выбранный спрайт. См. также drawSprites.

7a004b
d38577

int spriteUpdate(Sprite sprite, double time);

d38577
d38577

Рассчитать положение, скорость и ускорение спрайта за указанный отрезок времени. Обычно эта функция вызывается автоматически между вызовами функции перерисовки кадра. Однако вы можете «заморозить» выбранные спрайты функцией spriteSetFrozen для того чтобы они не пересчитывались автоматически, но могли быть рассчитаны вручную с помощью данной функции. Кроме прочего эта функция обновляет таймер удаления спрайта (см. spriteSetDestroyTimer) и поэтому может удалить спрайт. Функция возвращает FALSE если спрайт был удалён, и TRUE если спрайт продолжает существовать.

d38577
d38577

Параметры:

d38577
d38577

time — длительность отрезка времени для перерасчёта.

d38577
d38577

int spritesGetCount();

7a004b
d38577

Возвращает количество спрайтов существующих в программе в данный момент. См. также spritesGet.

7a004b
d38577

Sprite spritesGet(int i);

7a004b
d38577

Возвращает спрайт по указанному номеру. См. также spritesGetCount.

7a004b
7a004b

void drawSprites();

7a004b
cece70

Вывести все спрайты на экран. См. также spriteDraw.

7a004b
7a004b
7a004b
7a004b