Blame doc/ru/sprites.html

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

Helianthus

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

Спрайты

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Спрайт может изображаться в виде прямоугольника выбранного вами цвета (spriteSetShapeColor), либо в виде картинки из выбранного вами файла (spriteSetAnimation). Кроме того спрайт может содержать анимацию, для этого вместо одного изображения в него можно загрузить папку с картинками — кадрами. Эти кадры могут переключаться автоматически (spritePlay) или по вашей команде (spriteSetFrame, spriteNextFrame).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

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 7a004b
Ivan Mahonin 7a004b
void init() {
Ivan Mahonin 7a004b
    // Создать новый спрайт с центром в точке (200, 200)
Ivan Mahonin 7a004b
    mysprite = createSprite(200, 200);
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
    // Загрузить файл изображения.
Ivan Mahonin 7a004b
    spriteSetAnimation(mysprite, "picture.png"); 
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 7a004b

Физическое тело спрайта позволяет вам определять находится ли над спрайтом указатель мыши, см. функции mouseIsOver и mousePressedOver.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

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
    spriteOverlap
Ivan Mahonin 7a004b
    Да.
Ivan Mahonin 7a004b
    Да.
Ivan Mahonin 7a004b
    Спрайты проходят друг через друга, функция просто сообщает вам о факте касания.
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
    spriteCollide
Ivan Mahonin 7a004b
    Нет.
Ivan Mahonin 7a004b
    Нет.
Ivan Mahonin 7a004b
    Спрайты отталкиваются друг от друга — обычное столкновение двух объектов
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
    spriteBounceOff
Ivan Mahonin 7a004b
    Нет.
Ivan Mahonin 7a004b
    Да.
Ivan Mahonin 7a004b
    Первый спрайт отталкивается от второго, второй же продолжает своё движение так, словно ничего не было.
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
    spritePush
Ivan Mahonin 7a004b
    Да.
Ivan Mahonin 7a004b
    Нет.
Ivan Mahonin 1badb6
    Первый спрайт движется так будто и не было столкновения, второй же отталкивается от первого и меняет свою скорость и направление движения.
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
    spriteCollideEx
Ivan Mahonin 7a004b
    Задаётся параметрами функции.
Ivan Mahonin 7a004b
    Задаётся параметрами функции.
Ivan Mahonin 7a004b
    Это универсальная функция, которая вмещает в себя возможности предыдущих четырёх функций.
Ivan Mahonin 7a004b
  
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Также указанные функции (кроме spriteOverlap) имеют параметр bounciness — это показатель энергии столкновения.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Если bounciness меньше 1, то взаимная скорость спрайтов после столкновения уменьшится, как если бы столкнулись мешки с песком.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Если больше 1, то скорости после столкновения увеличатся. Можете представить себе супер-упругий волшебный мячик, который после падения на пол подпрыгивает выше чем падал.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметр bounciness есть и у каждого спрайта (spriteSetBounciness). При расчёте параметры bounciness от обоих спрайтов и параметр bounciness из функции перемножаются и получается окончательное значение bounciness для расчётов.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Таким образом запустив, например, функцию spritePush для двух ваших спрайтов вы тем самым инициируете расчёт физического взаимодействия межу ними. И кроме того вы одновременно с этим указываете какую роль в физической модели занимает ваш объект. Например для spritePush первый спрайт будет представлять из себя какую-то тяжёлую мощную платформу, сдвинуть которую второй спрайт не может — он просто отталкивается от неё сам, а платформа двигается (или стоит) как ни в чём ни бывало.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

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

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
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 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 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 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

double spriteGetRotationSpeed(Sprite sprite);

Ivan Mahonin 7a004b

void spriteSetRotationSpeed(Sprite sprite, double rotationSpeed);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Получить (Get) или задать (Set) скорость вращения спрайта. Да, спрайт имеет ещё и скорость вращения. Вы можете её задать в градусах в секунду и спрайт будет вращаться сам. См. также spriteSetRotation.

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

int spriteGetTag(Sprite sprite);

Ivan Mahonin 7a004b

void spriteSetTag(Sprite sprite, int tag);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

int spriteCollide(Sprite a, Sprite b, double bounciness);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

bounciess — показатель энергии столкновения.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int spriteBounceOff(Sprite sprite, Sprite other, double bounciness);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

bounciess — показатель энергии столкновения.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int spritePush(Sprite sprite, Sprite other, double bounciness);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

bounciess — показатель энергии столкновения.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int spriteCollideEx(Sprite a, Sprite b, int keepVelocityA, int keepVelocityB, double bounciness);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

bounciess — показатель энергии столкновения;

Ivan Mahonin 7a004b
keepVelocityA — если TRUE то спрайт a не меняет своих параметров и продолжает движение, так будто столкновения не было;
Ivan Mahonin 7a004b
keepVelocityB — если TRUE то спрайт b не меняет своих параметров и продолжает движение, так будто столкновения не было.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

double spriteGetBounciness(Sprite sprite);

Ivan Mahonin 7a004b

void spriteSetBounciness(Sprite sprite, double bounciness);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

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

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

Ivan Mahonin 7a004b
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 7a004b

void spriteSetAnimation(Sprite sprite, const char *path);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Задать файл изображения или анимации спрайта. Поддерживаются изображения в формате PNG. Если вместо файла указана папка, то из неё загружаются все файлы PNG в алфавитном порядке — анимация спрайта.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

path — путь к файлу PNG или к папке с фалами PNG для анимации.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spriteSetNoAnimation(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Убрать анимацию и изображение со спрайта — спрайт будет рисоваться в виде простого прямоугольника.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spritePlay(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Включить воспроизведение анимации для спрайта. При каждом вызове функции перерисовки окна будет переключаться кадр. Частоту перерисовки окна, а следовательно и частоту кадров для анимации спрайтов, можно задать функцией worldSetFrameRate. См. также spritePause.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spritePause(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Остановить анимацию спрайта. См. также spritePlay.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spriteNextFrame(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Перейти к следующему кадру анимации. Если это был последний кадр, то перейти к первому (точнее к нулевому).

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spriteSetFrame(Sprite sprite, int frame);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Перейти к кадру с заданным номером.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

frame - номер кадра, кадры нумеруются начиная с нуля.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spriteSetShapeColor(Sprite sprite, const char *color);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Установить цвет прямоугольника спрайта. Только для спрайтов у которых нет изображения или анимации.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

color — текстовое наименование цвета, см. раздел «Рисование».

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

void spriteSetTintColor(Sprite sprite, const char *color);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Установить цвет подкрашивания спрайта. Компоненты указанного цвета умножаются на компоненты цвета изображения (или базового прямоугольника) спрайта. Таким образом вы можете немного менять цвета в спрайте, а также устанавливать общую прозрачность спрайта.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

color — текстовое наименование цвета, см. раздел «Рисование».

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Параметры:

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

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

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mouseIsOver(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

int mousePressedOver(Sprite sprite);

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b

Функция возвращает TRUE (число 1) если любая кнопка мыши нажата (и удерживается) в то время как указатель мыши находится над указанным спрайтом, иначе возвращает FALSE (число 0). См. также раздел «Спрайты».

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

Вывести все спрайты на экран.

Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
Ivan Mahonin 7a004b
</body>
Ivan Mahonin 7a004b
</html>