[英]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進行碰撞檢測。 經過大量搜索之后,我遇到了以下解決方案,但它們似乎沒有用
旋轉后,如何應用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.