|
Ivan Mahonin |
7a004b |
<html>
|
|
Ivan Mahonin |
7a004b |
<head>
|
|
Ivan Mahonin |
7a004b |
<meta charset="UTF-8" />
|
|
Ivan Mahonin |
7a004b |
<link rel="stylesheet" type="text/css" href="style.css" />
|
|
Ivan Mahonin |
7a004b |
<title>Спрайты - Helianthus</title>
|
|
Ivan Mahonin |
7a004b |
</head>
|
|
Ivan Mahonin |
7a004b |
<body>
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
77a314 |
Helianthus
|
|
Ivan Mahonin |
77a314 |
|
|
Ivan Mahonin |
77a314 |
Helianthus: Документация
|
|
Ivan Mahonin |
77a314 |
Установка
|
|
Ivan Mahonin |
7a004b |
Запуск и общие функции
|
|
Ivan Mahonin |
7a004b |
Клавиатура и мышь
|
|
Ivan Mahonin |
7a004b |
Рисование
|
|
Ivan Mahonin |
cece70 |
Шрифты и текст
|
|
Ivan Mahonin |
cece70 |
Текстуры и анимация
|
|
Ivan Mahonin |
cece70 |
Буфер кадра
|
|
Ivan Mahonin |
7a004b |
Спрайты
|
|
Ivan Mahonin |
7a004b |
Группы спрайтов
|
|
Ivan Mahonin |
7a004b |
Звук
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Все функции
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Спрайты
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Спрайт — это изображаемый на экране объект, который сохраняет свою позицию и изображения от кадра к кадру. Другими словами для рисования спрайта не нужно каждый раз указывать его координаты, цвет и расположение — он хранит эти параметры внутри себя, их достаточно задать только один раз.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Спрайты будут выводится на экран командой drawSprites, она рисует на экране сразу все спрайты. Её достаточно вызвать только один раз за кадр.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Спрайт может изображаться в виде прямоугольника выбранного вами цвета (spriteSetShapeColor), либо в виде картинки или анимации из выбранного вами файла (spriteSetAnimation).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Положение спрайта задаётся координатами его центра (spriteSetX, spriteSetY, spriteSetXY), и углом поворота (spriteSetRotation). Кроме того вы можете задать ширину и высоту спрайта (spriteSetWidth, spriteSetHeight, spriteSetSize).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
a32bcc |
Создать спрайт можно функцией createSprite, которая возвращает значение типа Sprite, которое по сути является адресом в памяти — указателем на описание спрайта внутри библиотеки Helianthus.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Пример:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
#include <helianthus.h>
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Sprite mysprite;
|
|
Ivan Mahonin |
cece70 |
Animation myanimation;
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void init() {
|
|
Ivan Mahonin |
7a004b |
// Создать новый спрайт с центром в точке (200, 200)
|
|
Ivan Mahonin |
7a004b |
mysprite = createSprite(200, 200);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
// Загрузить файл изображения и назначить его нашему спрайту
|
|
Ivan Mahonin |
cece70 |
myanimation = createAnimation("picture.png");
|
|
Ivan Mahonin |
cece70 |
spriteSetAnimation(mysprite, myanimation);
|
|
Ivan Mahonin |
7a004b |
}
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void draw() {
|
|
Ivan Mahonin |
a32bcc |
// Повернуть спрайт на 10 градусов перед рисованием.
|
|
Ivan Mahonin |
a32bcc |
double r = spriteGetRotation(mysprite);
|
|
Ivan Mahonin |
a32bcc |
spriteSetRotation(mysprite, r + 10);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
// Вывести все спрайты на экран.
|
|
Ivan Mahonin |
a32bcc |
// Весь один спрайт, в данном случае.
|
|
Ivan Mahonin |
7a004b |
drawSprites();
|
|
Ivan Mahonin |
7a004b |
}
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int main() {
|
|
Ivan Mahonin |
7a004b |
worldSetInit(&init);
|
|
Ivan Mahonin |
7a004b |
worldSetDraw(&draw);
|
|
Ivan Mahonin |
7a004b |
worldRun();
|
|
Ivan Mahonin |
7a004b |
return 0;
|
|
Ivan Mahonin |
7a004b |
}
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Физика и обнаружение столкновений
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Спрайты в библиотеке Helianthus имеют физическую модель. Они могут обладать скоростью и отталкиваться друг от друга.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Изначально физическое представление спрайта это прямоугольник соответствующий видимой форме спрайта. Но это может быть изменено, например, вы можете представить спрайт для физической модели в виде круга, при этом видимое изображение останется прежним (spriteSetCollider).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Физическое тело спрайта позволяет вам определять находится ли какая-либо точка внутри спрайта, см. функцию spriteIsPointInside.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Помимо описания формы и размеров физического тела спрайта вам, скорее всего, понадобится задать и его скорость и ускорение (spriteSetVelocityXY, spriteSetAccelerationXY).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Также вы можете задать уровень массы спрайта. Спрайты имеют упрощённую физическую модель и считается что масса всех спрайтов с одинаковым уровнем массы одинакова. Однако, если уровень массы спрайтов отличается, то считается что масса объекта с большим уровнем настолько велика, что другой спрайт не может повлиять на скорость и направление движение первого. То есть для спрайта с меньшим уровнем массы, другой спрайт представляет из себя стену, он может оттолкнуться от неё, но сдвинуть не может.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Таким образом физическая модель либо рассчитывает столкновения двух спрайтов считая их массы равными и они на равных воздействуют друг на друга. Либо считает их массы считаются несоизмеримыми и спрайт с меньшим уровнем просто отталкивается от спрайта с большим уровнем ни как не влияя на его скорость. Всего два варианта, вот такая упрощенная модель.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Для обнаружения столкновений между двумя спрайтами и расчёта их скоростей и позиций после столкновения необходимо запустить функцию spriteCollide. Если вы хотите всего лишь определить касаются спрайты друг друга или нет, то вам достаточно вызвать функцию spriteOverlap.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Также вы можете задать коэффициент трения спрайта (spriteSetFriction), он будет использоваться когда один спрайт скользит по другому. Трение будет приводить к замедлению движения. По-умолчанию трения нет.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Функция spriteSetAirFriction задаёт силу трения о воздух (по умолчанию 0).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Физическая модель спрайта также имеет параметр отскок или bounciness (spriteSetBounciness), который показывает насколько сильно спрайты отскакивают друг от друга при столкновении. Если bounciness равен единице (значение по-умолчанию), то спрайты отталкиваются без потерь кинетической энергии, но и без её увеличения. Если bounciness меньше одного, то спрайты при столкновении теряют энергию и замедляются. Если bounciness больше одного, то спрайты отлетают друг от друга с увеличенными скоростями (как отталкивающие стержни в пинболе). Так как в столкновении участвуют два спрайта и у каждого из них своё значение bounciness, эти величины перемножаются при вычислении окончательной силы отскока.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Вы можете задать ещё и порог скорости отскакивания для спрайта - spriteSetBouncinessThreshold. Это значение будет вычтено из скорости спрайта после отскока, если точнее то будет применено среднее значение порога для двух столкнувшихся спрайтов. Таким образом столкновение может полностью поглотить энергию взаимного движения и спрайтов и они продолжат движение вместе с одинаковой скоростью в одном направлении или вовсе остановятся.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
После расчёта столкновений вы можете узнать вектор веса действующего на спрайт и действующую силу трения (spriteGetTouchWeight, spriteGetTouchWeightX, spriteGetTouchWeightY, spriteGetTouchFriction). Эти параметры будут сброшены в нулевые значения автоматически в промежутке между вызовами функции перерисовки кадра. Вы можете сбросить их вручную функцией spriteResetTouch. Расчёт этих параметров зависит от порога касания спрайтов — это тонкая настройка физической модели и обычно вам не требуется её менять (см. функцию spriteSetColliderSensitiveDistance).
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Однако, работы всего лишь с двумя спрайтами мало для полноценной физической модели. В помощь вам Helianthus предлагает группы спрайтов. Поместив свои спрайты в различные группы (или в одну группу) вы можете одной командой вызвать расчёт столкновений между всеми спрайтами в группе или между спрайтами одной группы со спрайтами другой группы или между группой и одиночным спрайтом.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Также функция createEdgesGroup поможет вам создать группу спрайтов обозначающую границы экрана, чтобы ваши объекты отталкивались от краёв экрана.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
acc470 |
Подробнее о группах и их функциях смотрите в разделе «Группы спрайтов».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Функции:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Sprite createSprite(double x, double y);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Создаёт спрайт с центром в указанной точке. См. также createSpriteEx.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
x, y — координаты центра нового спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Sprite createSpriteEx(double x, double y, double width, double height);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Создаёт спрайт заданного размера с центром в указанной точке. См. также createSprite.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
x, y — координаты центра нового спрайта;
|
|
Ivan Mahonin |
7a004b |
width — ширина нового спрайта;
|
|
Ivan Mahonin |
7a004b |
height — высота нового спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteDestroy(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Удаляет спрайт. Спрайт удаляется также из всех групп в которые он был включён.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Если же вы просто хотите спрятать спрайт не удаляя его, чтобы он просто больше не отображался на экране, то обратите внимание на функцию spriteSetVisible.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Важно: Скорее всего у вас в программе останется переменная в которой хранился указатель на спрайт. Этот указатель станет недействителен — будет указывать на неопределённую область памяти — не на спрайт, спрайт удалён. Вы можете занести в эту переменную другой спрайт, но использовать старое значение переменной больше нельзя это приведёт у ошибкам и непредсказуемому поведению программы.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteDestroyTimer(Sprite sprite, double lifetime);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Задаёт таймер для удаления спрайта через определённое время. Рекомендуется больше не обращаться к этому спрайту из вашей программы и не хранить указатель на него. Так как неизвестно существует ли спрайт ещё или уже сработал таймер удаления. Смотрите также функцию spriteDestroy и примечание к ней.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
lifetime — время в секундах по истечении которого спрайт должен быть удалён. Если 0 или меньше, то спрайт будет удалён немедленно. Если больше 0, то спрайт будет в один из промежутков между вызовами функции перерисовки кадра.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Sprite spriteClone(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Создать точную копию спрайта.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
7a004b |
double spriteGetX(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
double spriteGetY(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetX(Sprite sprite, double x);
|
|
Ivan Mahonin |
7a004b |
void spriteSetY(Sprite sprite, double y);
|
|
Ivan Mahonin |
cece70 |
void spriteSetXY(Sprite sprite, double x, double y);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) либо задать (Set) координаты центра спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetVelocityX(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
double spriteGetVelocityY(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetVelocityX(Sprite sprite, double x);
|
|
Ivan Mahonin |
7a004b |
void spriteSetVelocityY(Sprite sprite, double y);
|
|
Ivan Mahonin |
7a004b |
void spriteSetVelocityXY(Sprite sprite, double x, double y);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) либо задать (Set) координаты вектора скорости спрайта. См. также spriteSetSpeedAndDirection.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
double spriteGetAccelerationX(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetAccelerationX(Sprite sprite, double x);
|
|
Ivan Mahonin |
cece70 |
double spriteGetAccelerationY(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetAccelerationY(Sprite sprite, double y);
|
|
Ivan Mahonin |
cece70 |
void spriteSetAccelerationXY(Sprite sprite, double x, double y);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) либо задать (Set) координаты вектора ускорения спрайта.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
7a004b |
void spriteSetSpeedAndDirection(Sprite sprite, double speed, double angle);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Задать скорость спрайта через угол направления и абсолютное значение скорости. Если вы не понимаете смысла слов «абсолютное значение», то в здесь подразумевается обычное бытовое значение смысла слова скорость. В данном случае она измеряется в пикселях в секунду.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
speed — абсолютное значение скорости;
|
|
Ivan Mahonin |
7a004b |
angle — угол направления движения в градусах. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteSetRotation, spriteSetRotateToDirection).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetSpeed(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает абсолютное значение скорости спрайта. См. также spriteSetSpeedAndDirection.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetDirection(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает направление движения в градусах. См. также spriteSetSpeedAndDirection. Не путайте, пожалуйста, с отображаемым поворотом спрайта (spriteGetRotation).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetWidth(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetWidth(Sprite sprite, double width);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) либо задать (Set) ширину спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetHeight(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetHeight(Sprite sprite, double height);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) либо задать (Set) высоту спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteSetSize(Sprite sprite, double width, double height);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Задать ширину и высоту спрайта одной командой.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
7a004b |
double spriteGetScale(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetScale(Sprite sprite, double scale);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) либо задать (Set) масштабирование спрайта. Вы можете увеличить ли уменьшить весь спрайт и его физическое тело с сохранением всех пропорций. См. также spriteGetScaledWidth, spriteGetScaledHeight.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetScaledWidth(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает ширину спрайта с учётом масштабирования. См. также spriteSetScale.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetScaledHeight(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает высоту спрайта с учётом масштабирования. См. также spriteSetScale.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetRotation(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetRotation(Sprite sprite, double rotation);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) поворот спрайта. Не путайте, пожалуйста, с направлением движения спрайта. См. также spriteSetSpeedAndDirection, spriteSetRotateToDirection, spritePointTo.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteGetRotateToDirection(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetRotateToDirection(Sprite sprite, int rotateToDirection);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) автоматический поворот спрайта вдоль направления движения. rotateToDirection может принимать значение TRUE (число 1) или FALSE (число 0).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Когда rotateToDirection равно TRUE, спрайт будет автоматически поворачиваться в направлении своего движения (вектора скорости). См. также spriteSetSpeedAndDirection, spriteSetRotation.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteGetMirrorX(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetMirrorX(Sprite sprite, int mirrorX);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) отражение спрайта по оси X.
|
|
Ivan Mahonin |
7a004b |
Если mirrorX больше или равно 0, то спрайт рисуется как обычно.
|
|
Ivan Mahonin |
7a004b |
Если mirrorX меньше нуля то рисуется зеркальное отражение спрайта по горизонтали.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteGetMirrorY(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetMirrorY(Sprite sprite, int mirrorY);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) отражение спрайта по оси Y.
|
|
Ivan Mahonin |
7a004b |
Если mirrorY больше или равно 0, то спрайт рисуется как обычно.
|
|
Ivan Mahonin |
7a004b |
Если mirrorY меньше нуля то рисуется зеркальное отражение спрайта по вертикали.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetDepth(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetDepth(Sprite sprite, double depth);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) показатель глубины спрайта. На переднем плане рисуются спрайты с наименьшим значением глубины, на заднем — с наибольшим. Таким образом задавая глубину спрайтов вы определяете порядок их отрисовки.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteGetVisible(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetVisible(Sprite sprite, int visible);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) видимость спрайта. Может принимать значение TRUE (число 1) — спрайт видно, или FALSE (число 0) — спрайт спрятан.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
int spriteGetFrozen(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetFrozen(Sprite sprite, int frozen);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) «замороженность» спрайта. Может принимать значение TRUE (число 1) — спрайт заморожен, или FALSE (число 0) — спрайт в обычном состоянии.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Замороженный спрайт не двигается автоматически, к нему не будет автоматически применяться скорость и ускорение, как это делается для обычных спрайтов.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int spriteGetUserTag(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetUserTag(Sprite sprite, int tag);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) числовую метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любое число которое хотите связать с данным спрайтом.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
const char* spriteGetUserText(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetUserText(Sprite sprite, const char *text);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) текстовую метку спрайта. Этот параметр не используется внутри спрайта — заносите сюда любой текст которые хотите связать с данным спрайтом. Спрайт создаёт и хранит внутри себя копию данного текста.
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
void* spriteGetUserData(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetUserData(Sprite sprite, void *data);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) пользовательские данные спрайта. Этот параметр не используется внутри спрайта — заносите сюда указатель на любые данные, которые хотите связать с данным спрайтом. Спрайт хранит в себе только указатель на данные, сами данные не копирует.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteGetDebug(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetDebug(Sprite sprite, int debug);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Получить (Get) или задать (Set) отображение отладочной информации для данного спрайта. Может принимать значение TRUE (число 1) — включено, или FALSE (число 0) — выключено.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Когда включено, для данного спрайта рисуется его рамка, центр и значение глубины, даже если спрайт невидим.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Если в вашей программе что-то пошло не так, включите эту опцию для ваших спрайтов, возможно вы увидите причину ошибки.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int spriteOverlap(Sprite a, Sprite b);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает TRUE если спрайты касаются или накладываются друг на друга. В противном случае возвращает FALSE.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
int spriteCollide(Sprite a, Sprite b);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
acc470 |
Определяет есть ли столкновение между двумя спрайтами и, если есть, то рассчитывает новые скорости и позиции для указанных спрайтов и возвращает TRUE. В противном случае возвращает FALSE. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
int spriteIsPointInside(Sprite sprite, double x, double y);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Проверить попадает ли указанная точка в физическое тело спрайта. Функция возвращает TRUE если попадает и FALSE если нет.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
x, y — координаты точки.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
double spriteGetTouchWeight(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить скалярное значение силы (веса) действующей на спрайт со стороны других толкающих его спрайтов. Так как используется упрощённая физическая модель и все массы либо равны либо несоизмеримы, то сила эквивалентна потенциальному ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeightX, spriteGetTouchWeightY, spriteResetTouch.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
double spriteGetTouchWeightX(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
double spriteGetTouchWeightY(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить вектор силы действующей на спрайт со стороны других толкающих его спрайтов. Так как используется упрощённая физическая модель и все массы либо равны либо несоизмеримы, то сила эквивалентна потенциальному ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeight, spriteResetTouch.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
double spriteGetTouchFriction(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить значение силы трения спрайт о соприкасающиеся с ним спрайты. Возвращаемое значение эквивалентно ускорению и измеряется в единицах расстояния на секунду в квадрате. Это значение накапливается при вычислении столкновений в функции spriteCollide и сбрасывается в ноль в промежутке между вызовами функции перерисовки кадра. См. также spriteGetTouchWeight, spriteResetTouch.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteResetTouch(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Сбросить в ноль накопленные значения веса (spriteGetTouchWeight) и трения (spriteGetTouchFriction) столкновений. Эта функция вызывается автоматически между вызовами функции перерисовки кадра.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
double spriteGetBounciness(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
void spriteSetBounciness(Sprite sprite, double bounciness);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) показатель энергии столкновения (силы отскока) для данного спрайта. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double spriteGetBouncinessThreshold(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetBouncinessThreshold(Sprite sprite, double bouncinessThreshold);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) порог скорости отскакивания для спрайта. Это значение (среднее арифметическое для двух столкнувшихся спрайтов) будет вычтено из скорости спрайта после отскока. Таким образом столкновение может полностью поглотить энергию взаимного движения и спрайтов. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double spriteGetFriction(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetFriction(Sprite sprite, double friction);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) порог коэффициент трения для спрайта. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double spriteGetAirFriction(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetAirFriction(Sprite sprite, double friction);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) порог трения о воздух для спрайта. Определяет скорость замедления спрайта в единицах расстояния на секунду в квадрате. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
int spriteGetMassLevel(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetMassLevel(Sprite sprite, int massLevel);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) уровень массы спрайта. По-умолчанию — 0, может быть как отрицательным так и положительным. Это сравнительная характеристика, то есть не имеет значение насколько уровень одного спрайта превосходит уровень второго, а важен только сам факт превосходства. Больший уровень массы показывает, что спрайт с меньшим уровнем не может сдвинуть с места спрайт с большим уровнем — их масса считается несоизмеримой. См. описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
double spriteGetColliderSensitiveDistance(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetColliderSensitiveDistance(Sprite sprite, double distance);
|
|
Ivan Mahonin |
cece70 |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) порог касания для спрайта. Если спрайты находятся друг другу ближе чем на их суммарный порог касания, но при этом их физические тела не пересекаются, то считается что спрайты касаются друг друга. Это означает, что они создают друг другу силу трения и вес, но при этом не происходит отскакивания — скорости спрайтов не меняются. Значение по-умолчанию 0,001 — обычно этого хватает. Если размер ваших спрайтов меньше 0,01 или больше 1000, то вам нужно будет изменить значение порога касания. См. также описание физической модели в разделе «Спрайты».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteSetCollider(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Устанавливает параметры физического тела спрайта. Размеры тела определяются размерами самого спрайта. Для круга диаметр равен ширине спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
|
|
Ivan Mahonin |
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
Ivan Mahonin |
7a004b |
rotationOffset — поворот физического тела относительно спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteSetColliderCircle(Sprite sprite, double xOffset, double yOffset, double radius);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Задать физическое тела спрайта в виде круга.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
Ivan Mahonin |
cece70 |
radius — радиус круга, если меньше 0, то будет использоваться половина от ширины спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteSetColliderRectangle(Sprite sprite, double xOffset, double yOffset, double rotationOffset, double width, double height, double cornersRadius);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Задать физическое тела спрайта в виде прямоугольника. Прямоугольник может быть со скруглёнными углами.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
Ivan Mahonin |
7a004b |
rotationOffset — поворот физического тела относительно спрайта;
|
|
Ivan Mahonin |
7a004b |
width — ширина прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
|
|
Ivan Mahonin |
7a004b |
height — высота прямоугольника, если меньше 0, то будет использоваться высота спрайта;
|
|
Ivan Mahonin |
7a004b |
cornersRadius — радиус скругления углов.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteSetColliderEx(Sprite sprite, Collider type, double xOffset, double yOffset, double rotationOffset, double width, double height, double radius);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Устанавливает полный набор параметров физического тела спрайта.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
type — форма COLLIDER_CIRCLE (круг) или COLLIDER_RECTANGLE (прямоугольник);
|
|
Ivan Mahonin |
7a004b |
xOffset, yOffset — смещение центра физического тела относительно центра спрайта;
|
|
Ivan Mahonin |
7a004b |
rotationOffset — поворот физического тела относительно спрайта;
|
|
Ivan Mahonin |
7a004b |
width — ширина, используется только для прямоугольника, если меньше 0, то будет использоваться ширина спрайта;
|
|
Ivan Mahonin |
7a004b |
height — высота, используется только для прямоугольника, если меньше 0, то будет использоваться высота спрайта;
|
|
Ivan Mahonin |
7a004b |
radius — для круга — его радиус, для прямоугольника — радиус скругления углов.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Animation spriteGetAnimation(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetAnimation(Sprite sprite, Animation animation);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) анимацию для спрайта. Значение NULL означает отсутствие анимации. См. также раздел «Текстуры и анимация».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void spriteSetNoAnimation(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Убрать анимацию спрайта — спрайт будет рисоваться в виде простого прямоугольника. Эквивалентно вызову spriteSetAnimation(sprite, NULL).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
unsigned int spriteGetShapeColor(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetShapeColor(Sprite sprite, unsigned int colorCode);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) цвет прямоугольника спрайта. Применяется только если у спрайте нет анимации (см. spriteSetAnimation). Информацию о работе цветом смотрите в разделе «Рисование».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
unsigned int spriteGetTintColor(Sprite sprite);
|
|
Ivan Mahonin |
cece70 |
void spriteSetTintColor(Sprite sprite, unsigned int colorCode);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Получить (Get) или задать (Set) цвет подкрашивания спрайта. Компоненты указанного цвета умножаются на компоненты цвета изображения (анимации) или базового прямоугольника спрайта. Таким образом вы можете немного менять цвета в спрайте, а также устанавливать общую прозрачность спрайта. Информацию о работе цветом смотрите в разделе «Рисование».
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spritePointTo(Sprite sprite, double x, double y);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Повернуть спрайт по направлению к указанной точке. См. также spriteSetRotation.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
x, y — координаты точки.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteMoveBy(Sprite sprite, double dx, double dy);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Сдвинуть спрайт относительно его текущего положения на заданное расстояние по горизонтали и вертикали. См. также spriteSetXY, spriteMoveToDirection.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
dx, dy — координаты вектора перемещения.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteMoveToDirection(Sprite sprite, double distance, double angle);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Сдвинуть спрайт на заданное расстояние в указанном направлении. См. также spriteMoveBy.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
distance — растояние;
|
|
Ivan Mahonin |
cece70 |
angle — угол в градусах указывающий направление перемещения.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteSetDestroy(Sprite sprite, SpriteCallback destroy);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Установить указатель функцию, которая будет вызвана при удалении спрайта. Это может вам пригодиться когда спрайт удаляется автоматически функцией spriteDestroyTimer или когда к спрайту привязаны пользовательские данные (spriteSetUserData) которые нужно удалить вместе со спрайтом. Ваша функция должна принимать один аргумент типа Sprite и не возвращать значения (void). Чтобы отключить обратный вызов передайте NULL вместо указателя на функцию.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Параметры:
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
destroy — указатель на функцию; функция должна принимать один аргумент типа Sprite и ничего не возвращать (тип возвращаемого значения: void).
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
void spriteDraw(Sprite sprite);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Нарисовать выбранный спрайт. См. также drawSprites.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
int worldGetSpriteCount();
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает количество спрайтов существующих в программе в данный момент. См. также worldGetSprite.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Sprite worldGetSprite(int i);
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
Возвращает спрайт по указанному номеру. См. также worldGetSpriteCount.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
void drawSprites();
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
cece70 |
Вывести все спрайты на экран. См. также spriteDraw.
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
|
|
Ivan Mahonin |
7a004b |
</body>
|
|
Ivan Mahonin |
7a004b |
</html>
|