2011-12-28 31 views
0

我試圖擴展並使用以下方法旋轉CCSpriteCGRect使用CCSprite旋轉改變?

[rectangleSprite setRotation:touch1.y]; 

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

但是,當我縮放或旋轉它的CGRect擴展到涵蓋通過CGRectIntersectsRect整個旋轉區域和碰撞檢測不起作用精靈。很多搜索後我碰到下面這個樣子的解決方案,但他們似乎並沒有工作

how to check for collision with rotated 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); 

回答

0

你總是可以利用cocos2d的與包裝做碰撞檢測你不是滾動自己的碰撞檢測的物理的圖書館之一。您只需讓物理實體在更新函數中跟蹤您的精靈位置和旋轉,而不是其他方式,因此物理引擎不會爲您移動您的精靈。

+0

是的,我決定在Ray Wenderlich的優秀教程的幫助下使用Box2d進行碰撞檢測..謝謝 – hemant 2011-12-30 09:19:54

+0

Ray的網站很棒!網絡上的一些最好的教程 – bweberapps 2011-12-30 22:25:54