首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocos2d“捕捉到网格”逻辑

Cocos2d“捕捉到网格”逻辑
EN

Stack Overflow用户
提问于 2013-04-20 05:33:35
回答 1查看 445关注 0票数 0

我正在用Cocos2d构建一个游戏,我很难实现我想要的东西。想象一下一个8 x 10的正方形网格。您可以触摸一个正方形并水平/垂直拖动该正方形的行/列,但不能同时拖动。释放行/列后,方块将根据其最近的行/列位置在网格中“捕捉”回原来的位置。

一切都以编程方式工作,没有重叠,没有错放的方块,也没有无效的位置。然而,我似乎就是不能让这个‘捕捉到网格’动画的方式我想要的。

我正在使用MVC设计模式将任何视图与任何游戏逻辑分开。视图只需传递一个“squaresToUpdate”数组,查看每个正方形,找到相应的sprite,然后根据正方形的位置更新子画面的位置。

当尝试这样做时,问题就出现了:

代码语言:javascript
复制
-update():
for each square in squaresToUpdate:
  if square is not being dragged at the moment:
    setup a 'CCMoveTo' to bring the sprite in line with square  

我不能让方块在被拖动时自由移动,但在不被拖动时CCMoveTo。要么我每次更新都创建一个新的动作,要么这些方块就会抓狂。

我不知道是不是我的逻辑被打破了,如果CCMoveTo没有做我想做的事情,或者这个问题实际上比我最初想象的要难得多。有人能帮我解决这个逻辑吗?

好旧的铅笔和纸给了我这个,但我不确定它是不是100%:

代码语言:javascript
复制
- (void)update:(ccTime)dt {
    NSMutableArray *toDraw = [self.rootView whatAmIDrawing];
    for (GameObject *o in toDraw) {
        CCSprite *sprite = (CCSprite*)[self.batch getChildByTag:o.tag];
        if (o.moving == NO) {
            if (o.snapping == NO) {
                o.snapping = YES;
                CCMoveTo *move = [CCMoveTo actionWithDuration:self.rootView.model.activeGame.snapSpeed position:o.position];
                [sprite runAction:move];
            }
        } else {
            o.snapping = NO;
            sprite.position = o.position;
            sprite.rotation = o.rotation;
        }
    }
    [super update:dt];
}
EN

回答 1

Stack Overflow用户

发布于 2013-04-20 06:27:47

我将覆盖cocos2d触摸方法:

代码语言:javascript
复制
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event

ccTouchBegan会将触摸点与每个游戏对象进行比较,并设置一个“已触摸”标志:

ccTouchMoved会将任何“触摸”对象的位置设置为新的触摸位置,并设置一个“移动”标志。

ccTouchEnded将清除所有“已接触”标志,运行CCMoveTo到任何具有“移动”标志的对象的新位置,然后清除所有“移动”标志。

update()方法只需将每个子画面的位置更改为对象的位置即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16113823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档