【问题标题】:CGRect changes with CCSprite Rotation?CGRect 随 CCSprite 旋转而变化?
【发布时间】:2011-12-28 10:43:30
【问题描述】:

我正在尝试使用以下方法缩放和旋转 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 来根据旋转获得新的矩形,或者还有其他可能的方法吗? 我正在以下列方式应用变换,但我得到的矩形具有负原值..我可能做错了什么?

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);

【问题讨论】:

    标签: ios math cocos2d-iphone collision-detection


    【解决方案1】:

    您始终可以利用与 cocos2d 打包的物理库之一为您进行碰撞检测,而不是滚动您自己的碰撞检测。您只需让物理实体在更新函数中跟随您的精灵位置和旋转,而不是相反,因此物理引擎不会为您移动您的精灵。

    【讨论】:

    • 是的,在 Ray Wenderlich 优秀教程的帮助下,我决定使用 Box2d 进行碰撞检测。谢谢
    • Ray 的网站很棒!网络上一些最好的教程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多