我知道這不是一個Objective-C的問題,但是我知道,我想我可能會利用這個網站上的一些驚人的人才來解決這個問題。以菱形編程排列對象
我想爲鑽石形式(見圖)放置一個Sprite Kit遊戲對象。我正在努力想辦法做到這一點。
中心塊(13)將被排列在屏幕的中心(self.size.width/2), (self.size.height/2)
我使用了以下定義爲我的佈局
#define kLevel_01_GridSize 5
#define kLevel_01_SpacingX 75
#define kLevel_01_SpacingY 32
後續的基礎代碼是我在這一點上所有。它把第一個塊(1)
-(void)layoutLevel {
int gridCentre = (kLevel_01_GridSize - 1)/2;
int totalObjects = kLevel_01_GridSize * kLevel_01_GridSize;
CGPoint objectPosition;
for (int x = 1; x < totalObjects; x++)
{
objectPosition = CGPointMake(self.size.width/2 , (self.size.height /2) + (x * gridCentre) * kLevel_01_SpacingY);
SKNode *block = [self makeBlockOfType:LevelBlock];
block.position = objectPosition;
[self addChild:block];
}
}
還請裸記住,我想被放置在圖片中的數字順序的對象。這將有助於保持圖層順序。
任何幫助,將不勝感激:)
首先,我感謝您的幫助,並尊重您作爲對本網站及其他人的貢獻。不過,我認爲你誤解了我的意圖。我的基本觸發器和幾何體是不存在的,但在做這篇文章之前,我一直在這個問題上掙扎了大約一個星期。雖然你的第一個方法是我的頭,我已經考慮了第二個,但正如你所說的放置數字是一個問題。我會坐下來再想一想。 – justMike
如果你不習慣使用trig,那麼使用轉換矩陣可能是一條可行的路。 GLKit支持2D和3D變換矩陣數學。你可以佈置你的矩形不旋轉,然後在繪製之前對中心和每個角應用45度旋轉。您將使用居中佈局作爲標籤,並簡單地將其中心移動到每個圖塊的旋轉中心聯合顯示。 –
謝謝鄧肯。我想我現在有一個可行的概念。在佈局之後設置zPosition值也可能會簡化一些事情。我現在要把問題留給我,直到我將它拼湊在一起。 – justMike