1

特定の回転のCCNodeがあります。簡単にするために、45度回転した場合、サイズは100 * 100、位置は200,200です。

例

この画像で4つのコーナー座標(緑色でマークされている)を探しています。これに使用できるフレームワークの方法はありますか、それとも三角測量を使用して手動で行う必要がありますか?その場合、どうすればそれを最も簡単な方法で行うことができますか?

最良のことは、これをCCNodeクラスのメソッドにして、簡単にアクセスできるようにすることができるかどうかです。

4

2 に答える 2

1

これを試して:

CGFloat angle = node.rotation * M_PI / 180;
CGRect frame = CGRectMake(node.position.x, node.position.y, node.contentSize.width, node.contentSize.height);

CGPoint ip0 = CGPointMake(frame.origin.x,frame.origin.y);
CGPoint ip1 = CGPointMake(frame.origin.x +frame.size.width, 0);
CGPoint ip2 = CGPointMake(0,frame.origin.y +frame.size.height);
CGPoint ip3 = CGPointMake(frame.origin.x +frame.size.width,frame.origin.y +frame.size.height);

ip0 = CGPointApplyAffineTransform(ip0, CGAffineTransformMakeRotation(angle));
ip1 = CGPointApplyAffineTransform(ip1, CGAffineTransformMakeRotation(angle));
ip2 = CGPointApplyAffineTransform(ip2, CGAffineTransformMakeRotation(angle));
ip3 = CGPointApplyAffineTransform(ip3, CGAffineTransformMakeRotation(angle));
于 2012-08-16T13:51:30.483 に答える
1

CCNode.h:

/** Converts a Point to world space coordinates. The result is in Points.
 @since v0.7.1
 */
- (CGPoint)convertToWorldSpace:(CGPoint)nodePoint;

/** Converts a Point to node (local) space coordinates. The result is in Points.
 @since v0.7.1
 */
- (CGPoint)convertToNodeSpace:(CGPoint)worldPoint;

例:

// top right corner of your node 
CGPoint topRight = ccp(node.contentSize.width, node.contentSize.height);
// same point in world coordinates
CGPoint topRightWorld = [node convertToWorldSpace:topRight];
于 2012-08-16T15:26:14.867 に答える