2011-08-14 247 views
1

我一直在關注Ray Wenderlich教程中的這段代碼(http://codeviewer.org/view/code:1d8b)。我試圖做幾乎相同的事情,除了我使用spritesheet(batchnode),並且我想讓目標/敵人從屏幕右側產生(在任何高度),並移動到左側(在相同的高度)。這是我的代碼。 (http://codeviewer.org/view/code:1d8c)。隨機產生敵人

額外信息 - 「痣」是我的目標/敵人。在前幾行旁邊註釋掉代碼(//)就是我的筆記。 編輯 - 看看我對mjvotaw的回答的評論。

+0

什麼問題? – jtbandes

+0

沒有錯誤或崩潰,但敵人從左下角產生,然後轉到ccp:(100,100)。他們從錯誤的地方產卵。而且,他們都在那個角落的同一個地方產卵。它不是隨機的。 – Joethemonkey101

+0

我投票結束這個問題,因爲[codeviewer.org鏈接不再工作](https://meta.stackoverflow.com/questions/345443/what-should-happen-to-questions-using-codeviewer- ORG-的共享代碼)。沒有這些鏈接,問題就沒有明確的[最小,完整和可驗證的例子](https://stackoverflow.com/help/mcve)。 – g00glen00b

回答

-1

如果您想將您的摩爾精靈沿着右側的任意點,你應該能夠只是做:

[mole setPosition: ccp(winSize.width - [mole contentSize].width, arc4random() % winSize.height)]; 

那臺痣最右側邊緣,在隨機點沿着y軸。 然後,您可以使用CCMoveBy,而不是使用CCMoveTo的actionMove,將位置設置爲ccp(-winSize.width,0)。

如果這不是你正在尋找的,或許你應該重新思考如何提出你的問題。

+0

感謝您的幫助。我稍微改了一下代碼(http://codeviewer.org/view/code:1d91)。當我跑步時,我讓敵人在我想要的位置閃爍,但隨後又將位置切換到屏幕底部。我的代碼有問題嗎?請檢查,謝謝。 – Joethemonkey101

+0

我注意到你在第6行設置了鼴鼠的位置,但是直到19歲才真正創建痣對象,不知道我以前怎麼沒有捕捉到它。在創建CCSprite之前,不應該引用mole對象。 – mjvotaw

+0

非常感謝!你不知道你幫了我多少錢= D – Joethemonkey101

-1

請參閱this tutorial關於創建從隨機點開始移向目標的敵人。這是頁面上的一些小方法。

編輯:

創建隨機Ÿ重生點,做到以下幾點:(假設你使用了cocos2d)

// Define these at the top of the .m file 
#define ARC4RANDOM_MAX 0x100000000 
#define RAND_FLOAT ((float)arc4random()/ARC4RANDOM_MAX) 

- (CGPoint)pointWithRandomYAtX:(float)locationX 
{ 
    CGSize size = [[CCDirector sharedDirector] winSize]; 
    return CGPointMake(locationX, RAND_FLOAT * size.height); 
} 

然後簡單的「鼴鼠」的位置設置爲點。

+0

這是我從片段中截取的完全相同的教程,這不是我的問題。我知道我想如何/在哪裏移動敵人,但原來的產卵地點給我帶來麻煩。 – Joethemonkey101

+0

查看上面的修改 –

+0

當我這樣做時,敵人在左下角產生(錯誤的地方),然後離開屏幕向左。當一個新生物產生時,一個敵人在屏幕左側的不同/隨機位置閃爍(我想要的,除了它只在那裏瞬間閃爍,並且我希望它位於屏幕的右側屏幕)。你可以看看這個文件嗎?這是我的.m。謝謝 http://www.4shared.com/file/zY8LSBiW/Mole.html 代碼位於addMole方法中。 – Joethemonkey101