繁体   English   中英

CGRect是否随着CCSprite旋转而改变?

[英]CGRect changes with CCSprite Rotation?

我正在尝试使用以下方法缩放和旋转CCSprite

[rectangleSprite setRotation:touch1.y];

rectangleSprite.scaleX=(touch1.x-touch2.x)/100;
rectangleSprite.scaleY=(touch1.y-touch2.y)/100;

但是,当我缩放或旋转精灵时,其CGRect会扩展为覆盖整个旋转区域,并且无法通过CGRectIntersectsRect进行碰撞检测。 经过大量搜索之后,我遇到了以下解决方案,但它们似乎没有用

如何检查与旋转的CGRect的碰撞?

旋转后,如何应用CGRectApplyAffineTransform来根据旋转获得新的rect,或者有其他可能的方法吗? 我以以下方式应用变换,但是我得到的矩形的原点值为负。我可能在做什么错?

CGAffineTransform affine;

//  add a rotate
affine = CGAffineTransformMakeRotation(-CC_DEGREES_TO_RADIANS(angle));


CGRect start =[rectangleSprite boundingBox];
NSLog(@"cg rect %f %f",start.size.height ,start.size.width);

CGRect  newRect = CGRectApplyAffineTransform(start, affine);

NSLog(@"cg rect %f %f",rct.origin.x,rct.origin.y);

您始终可以利用cocos2d随附的物理库之一为您执行碰撞检测,而不用滚动自己的碰撞检测。 您只需让物理物体跟随更新功能中的精灵位置和旋转,而不是沿相反方向移动,以便物理引擎不会为您移动精灵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM