[英]CGRect with an angle
我有一條線,這是使用此代碼制作的精靈
CGPoint diff = ccpSub(startLocation, endLocation);
float rads = atan2f( diff.y, diff.x);
float degs = -CC_RADIANS_TO_DEGREES(rads);
float dist = ccpDistance(endLocation, startLocation);
CCSprite *line = [CCSprite spriteWithFile:@"line.png"];
[line setAnchorPoint:ccp(0.0f, 0.5f)];
[line setPosition:endLocation];
[line setScaleX:dist / line.boundingBox.size.width];
[line setRotation: degs];
line.tag = 1;
[_lines addObject:line];
[self addChild:line];
現在,在沖突檢測代碼中,我使用以下代碼創建一個CGRect:
CGRect lineRect = CGRectMake(
line.position.x - (line.contentSize.width/2),
line.position.y - (line.contentSize.height/2),
line.contentSize.width,
line.contentSize.height);
當然這是有缺陷的,因為該線是使用一個角度制作的。
我正在嘗試將矩形,方形精靈與該矩形進行比較。 這個想法是,角色正在移動並且玩家可以畫一條線,如果角色擊中該線,則它會沿相反方向反彈。
我有角度,直線一側的x&y位置和直線的長度。 如何獲得線另一側的另一個x&y位置?
希望你們能幫助我。
提前致謝!
您可能應該查找CGRectApplyAffineTransform
, CGAffineTransformMakeRotation
以及CGAffineTransformMakeTranslation
的文檔。
很難知道我是否正確理解了您,但是當您說“ ...線的另一側的x&y位置”時,我假設您的意思是線的另一端點的坐標是什么。
如果是這樣,我相信您可能要尋找的實際公式是:
{x2,y2] =您要查找的點
但是,正如我之前提到的,我不確定這是否能滿足您的需求。 如果您實際上是在尋找Line.png邊界框另一側的頂點的點,那么也許您仍然可以使用該公式,但是將度數更改90,以確定相對於x&y的坐標偏移你已經知道了。
無論如何,我希望至少能幫助您找到有用的方向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.