масштабирование ccsprite и ccphysicsbody

Игрок, который уменьшается в масштабе (через несколько секунд по ходу игры), но его ассоциированное тело не уменьшается.

Я создал объект Player с помощью SpriteBuilder со следующими данными:\

CCSprite with Physics enabled
- Dynamic Body
- Allows rotation and affected by gravity
- Density is 1.00
- Friction is 0.00
- Elasticity is 0.00
- Physics shape is Circle with corner radius 13.00

Здесь мой плеер идеален, и его физическое тело точно ему подходит.

Я хочу, чтобы игрок уменьшался по ходу игры, например, игрок оставляет следы, как астероид, и в конечном итоге становится меньше с 26 пикселей до 10 пикселей.

Я использую __player.scale += 0.1 для увеличения или уменьшения размера плеера. Но это масштабирует только размер изображения игрока. Это не влияет на физическое тело игрока.

Пожалуйста, предложите мне, как переопределить PhysicsBody с помощью CCSprite, чтобы он подходил для игрока.


person Paresh Thakor    schedule 30.11.2015    source источник


Ответы (1)


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

Sprite->setScale(Scale);
Sprite->setContentSize(ContentSize);

Приведенный выше код масштабирует изображение Sprite и его PhysicsBody в соответствии с заданными вами аргументами.

person Leandro Gecozo    schedule 01.01.2016