gpt4 book ai didi

iPhone、Cocos2D - 触摸屏幕时左/右移动 Sprite

转载 作者:行者123 更新时间:2023-11-29 04:49:55 25 4
gpt4 key购买 nike

我是 Objective C 和应用程序开发的新手,所以请放轻松!我正在尝试制作一个基本游戏,并且需要在用户的手指位于屏幕上时连续向左或向右移动 Sprite - 左侧向左移动,向右向右移动......我尝试使用 update 每 1/60 秒重复移动几个像素。到目前为止,这就是我所拥有的(对格式感到抱歉):

    #import "GameplayLayer.h"

@implementation GameplayLayer

-(id)init {
self = [super init];
if (self != nil) {
CGSize screenSize = [CCDirector sharedDirector].winSize;
// enable touches
self.isTouchEnabled = YES;

blobSprite = [CCSprite spriteWithFile:@"blob.png"];
[blobSprite setPosition: CGPointMake(screenSize.width/2, screenSize.height*0.17f)];

ball = [CCSprite spriteWithFile:@"ball.png"];
[ball setPosition:CGPointMake(10, screenSize.height*0.75f)];

[self addChild:blobSprite];
[self addChild:ball];

[self schedule:@selector(update) interval:1.0f/60.0f];

}
return self;
}



-(void) update:(ccTime)dt{
if (_tapDownLeft == YES){
blobSprite.position.x==blobSprite.position.x-5;
}
if (_tapDownRight == YES){
blobSprite.position.x==blobSprite.position.x+5;
}
}


-(void) ccTouchesBegan:(UITouch*)touch withEvent: (UIEvent *)event{

CGPoint touchLocation = [touch locationInView:[touch view]];
touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];

if (touchLocation.x > 400) {
if ((blobSprite.position.x+10)<460){
_tapDownRight = YES;
}
}

if (touchLocation.x < 200) {
if ((blobSprite.position.x-10>20)){
_tapDownLeft = YES;
}
}

else {
_tapDownLeft = NO;
_tapDownRight = NO;
}
}
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
_tapDownLeft = NO;
_tapDownRight = NO;
}



-(void) registerWithTouchDispatcher{
[[CCTouchDispatcher sharedDispatcher]addTargetedDelegate:self priority:0 swallowsTouches:YES];
}


@end

我的做法正确吗?目前,它在更新中给我“表达式结果未使用”。谁能告诉我我错过了什么?任何帮助将不胜感激。

谢谢,帕特里克

最佳答案

我在这里看到了一些东西:

  • 不确定您的选择器是否会调用更新:@selector(update:)
  • 我不会依赖 dt 恰好是 1/60 秒,也不依赖恒定值。我倾向于定义一个速度常数(以每秒点数为单位),并在每个更新周期根据所需的速度和 dt 计算以点为单位的 deltaX。
  • 我没有看到“registerWithTouchDispatcher”调用(我尝试将它们放在 onEnter 和 onExit 中)方法。
  • 在其中的某个位置,确保删除了您的子项(在 dealloc 中,或者更好地在本地清理方法中(不要忘记调用 [ super 清理])。

关于iPhone、Cocos2D - 触摸屏幕时左/右移动 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com