Rumah > Soal Jawab > teks badan
我想开发一款iPhone上的*游戏,怎样可以让这个*转起来呢?
原问题:how can I use animation in cocos2d?
PHP中文网2017-04-22 09:01:23
Jawapan: Brad Larson
(Jawapan terbaik)
Saya tidak tahu cara memasukkan animasi pada cocos2d, tetapi anda boleh mencipta animasi teras dengan CALayers atau UIViews. Mungkin cara paling mudah ialah mencipta UIImageView yang mengandungi corak * dan kemudian menghidupkannya.
Mula-mula, buat UIImageView baharu dan tetapkan corak * kepada nilai awalnya Jika anda mahu * berputar, gunakan kod berikut:
CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 0.25f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;
[rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
Anggapkan rotatingImage ialah UIImageView yang anda perlukan.
Dalam contoh ini, meja putar akan berputar 5 kali, setiap kali mengambil masa 0.5 saat Putaran akan berhenti pada separuh bulatan, kerana Animasi Teras menukar arah pada separuh bulatan, jadi sebelum putaran bertukar arah, paling banyak Biarkan meja putar bertukar separuh. satu giliran. Dalam erti kata lain, jika anda menetapkan sudut putaran kepada (1.5f * pi), ia hanya boleh berputar sembilan puluh darjah. Jika anda menetapkan nilai radian kepada (0.999f * pi), meja putar akan berputar mengikut arah jam.
Jika anda ingin mencapai kesan pecutan atau nyahpecutan, sebaiknya jangan gunakan CABasicAnimation akan mempunyai kesan yang lebih baik.
Jawapan: Stanislav
Dalam cocos2d, cara mudah ialah: set
[sprite runAction:[RotateBy actionWithDuration:dur angle:360]];
Lengkapkan tindakan putaran Jika anda memerlukan putaran berterusan, anda boleh menetapkannya
id action = [RepeatForever actionWithAction: [RotateBy actionWithDuration:dur angle:360]];
[sprite runAction:action];
dan
[sprite stopAction:action];
Sebelum ini, pastikan anda menetapkan sprite transformAnchor supaya imej berada di tengah.
Jawapan: mahboudz
Anda boleh menetapkan parameter arka yang berbeza untuk melengkapkan putaran lengkap, tanpa perlu mempertimbangkan sama ada ia boleh melengkapkan putaran lengkap, dan tidak perlu membahagikan keseluruhan proses putaran kepada beberapa bahagian untuk mereka bentuk. Contohnya, kod berikut boleh melengkapkan kesan putaran, berputar sekali sesaat:
- (void) runSpinAnimationWithDuration:(CGFloat) duration;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
Jawapan: Lapan Puluh Lapan
Terdapat banyak cara untuk mencapai kesan animasi Jika anda ingin menetapkan kesan animasi mod bingkai demi bingkai untuk meja putar, anda boleh menggunakan AtlasDemo untuk mencapai matlamat ini.