![](/img/trans.png)
[英]Cocos2d (spacemanager) scale sprite to touch or projection guide line?
[英]Cocos2d : scale layer to a sprite
解決這個瑣碎的功能時,我遇到了一些問題。 在游戲中,在關卡中的某個點,我停止了游戲的主要循環,並希望縮放到玩家精靈。 將播放器精靈添加到包含此循環的圖層中,並運行代碼以縮放到該播放器。
看起來像這樣:
-(void) stopGameAndZoomToPlayer {
[gamePlayLoop_ invalidate];
zoomToPlayerLoop_ = [NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f target:self selector:@selector(tickZoomToPlayerLoop:) userInfo:nil repeats:YES];
}
目前,tick方法是這樣實現的:
-(void) tickZoomToPlayerLoop:(NSTimer*)timer {
if (self.scale > 4) {
[zoomToPlayerLoop_ invalidate];
}
[self setScale:self.scale+0.001];
CGSize winSize = [[CCDirector sharedDirector]winSize];
CGPoint targetPosition = playerSprite_.position;
float wantedX = ((winSize.width/2-targetPosition.x)/self.scale);
float wantedY = ((winSize.height/2-targetPosition.y)/self.scale);
CGPoint maximumCenter = ccp(wantedX,wantedY);
[self setPosition:maximumCenter];
}
似乎微不足道吧? 但是,我必須要缺少一些東西,因為變焦雖然很慢,但相對於播放器精靈偏移。 在tickZoomToPlayerLoop計時器的末尾,播放器精靈顯示在屏幕的右上角; 它不在中心 (但甚至不在視口右上角的中心)。
以我的方式看, 這段代碼將主層的中心放到播放器精靈的位置。 然后縮放 。 實際上,位置不應該在縮放循環中,但我將其放在此處是因為我需要處理關卡圖層的邊界,因為到目前為止,用戶可以在關卡之外看到不可玩區域的黑色空白。 但是,即使循環開始時主層的中心似乎是播放器精靈,在縮放時,也可以看到不是。
比例尺是否以CCNode的中心為目標? 它以任何方式抵消了嗎? 錨點是否在縮放過程中起作用?
更多信息:
據我所知,縮放是受錨點影響的。 如果您所需要做的只是放大而不使用CCCamera?
[myLayer.camera setEyeX:0 eyeY:0 eyeZ:zoomValue];
您可以更改eyeZ來放大和縮小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.