簡體   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