Articles of cocos2d

Cocos2D:Box2D可以通过一种物体而不是另一种物体移动的物体

我正在使用Cocos2D 2.0和Box2D创建一个简单的平台游戏。 我试图创造一种不能被玩家移动的箱子物体,但是可以被一个大象物体移动。 当玩家冲向箱子时,应该阻止他死在他的轨道上(就像他正在碰到一个静态的Box2D身体)。 如果大象碰到它,它应该被打倒(就像大象正在碰到一个质量/密度小得多的dynamicBox2D体)。 我不能使用碰撞位掩码,因为我当然希望碰撞发生在两种情况下,我只是希望碰撞导致不同的事情取决于哪种types的对象正在打箱子。 任何人都有一个关于如何使这项工作的暗示? 提前致谢!

cocos2d ccTouchEnded:删除一个Touch

这些是我的ccTouch_ _方法。 请注意,我正在使用函数的单数forms(即。ccTouchBegan诉ccTouchesBegan(不知道这是否与它有任何关系,但它不能伤害指出))。 -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{ //NSLog(@"1"); CGPoint touchLocation = [GameScene locationFromTouch:touch]; CTouch* newTouch = [[CTouch alloc] initWithStart:touchLocation]; [touches addObject:newTouch]; //Right now the UILayer takes all touch events and handles them return YES; } -(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event{ //NSLog(@"2"); //Get the touch's location and previous location CGPoint touchLocation = [GameScene locationFromTouch:touch]; CGPoint lastTouchLocation = […]

粘土果酱连续path/水龙头

我看到了这个游戏粘土果酱,用户可以在沙中创建一条path。 path是一个连续的path,它可以从一个点到曲线变化。 如何发展平稳而连续的道路?

在cocos2d v3中预加载

我正在尝试创建一个预加载,但是我不知道如何在cocos2d iphone v3中实现这个主题的代码。 由于CCTextureCache已更改为CCTexture,并且不再具有sharedTextureCache属性。 @interface TextureHelper : NSObject + (void) preloadTextures; + (CCTexture2D *) textureForImageNamed:(NSString *) imageName; @end @implementation TextureHelper + (CCTexture2D *) textureForImageNamed:(NSString *) imageName { return [[CCTextureCache sharedTextureCache] textureForKey:imageName]; } + (void) preloadTextures { // or could read from a directory… NSArray *imageNames = @[ @"myImage1.png", @"myImage2.png" ]; for (NSString *imageName in imageNames) […]

Cocos2d / Cocos2d-x将箭头(精灵)附加到另一个身体精灵(人物)

我正在试图建立一个简单的弓箭游戏。 当箭头击中敌人身体时,箭头的身体被删除,箭头精灵继续更新,保持相对于它命中的敌人的位置正确。 画一个箭头粘在身体和身体仍然在旋转和移动。 我的问题是当敌人旋转时旋转是完全错误的。 我知道如何用matrix变换在3d中做到这一点,但我似乎无法在2d与科科斯弄清楚。 这是我的方法。 我保存箭头击中敌人的偏移量。 每一帧,我都会使精灵的旋转与敌人的旋转相匹配。 然后,我应用我最初拿的那个箭头击中敌人的偏移量。 当他们旋转,他们围绕他们各自的锚点旋转,我想知道如果我需要设置箭头的锚点的精灵中心。 有谁知道一个简单的方法来做到这一点。 如果没有,我会尝试创建一个algorithm,其中的锚点被设置为偏移量除以精灵图像的宽度和高度,希望给我正确的锚点值。 那么我想我需要重新定位精灵。 有没有人有一个更简单的方法来做到这一点?

在Cocos2D中使用CCOrbitCamera时如何防止鱼眼效应?

注意:我使用的是Xamarin C#版本的CocosSharp,但是这个问题对于我所有的Cocos2D版本都是有效的。 我用任何Cocos2D方言也没问题(这里没有CocosSharp的标签)。 我正尝试使用CCOrbitCamera创建卡片翻转animation。 这对于下面的代码非常有效 – 除非精灵不在屏幕的中心。 var animateInFirstHalf = new CCOrbitCamera(animDurationSeconds, 1, 0, 0, 90f, 0, 0); 我的想法是将卡翻转90度,然后交换纹理,并进一步翻转。 在90度时,如果精灵居中,唯一可见的是细线。 如果它不在中心,它看起来像这样: 图片来自一篇博客文章 ,通过伪造animation来解决问题。 但是,我不知道是否有可能以某种方式运行的animation,如精灵中心? 像几乎翻译到中心的东西。

cocos2d-js只显示tmx文件中的一种types的图块

我正在使用Tiled生成一个tmx ,我在我的代码中使用cocos2d-js 。 问题是,当我在浏览器上运行它时,会显示错误的贴图,第一个图像(0,0)并重复整个贴图。 相关的js代码是这样的: this.farm = new cc.TMXTiledMap(res.farm_tmx); this.addChild(this.farm); 其中res.farm_tmx是tmx文件的path。 什么可能是问题的根源? 我该如何解决? 在我看来,这是特定于我的代码。 我没有发现任何其他相同的问题报告。

我如何计算一个或多个物体在轨道上的物体的path?

我需要弄清楚如何计算我正在制作的游戏(建立在Cocos2D-Swift上)的一个或多个物体周围物体的轨道。 游戏是二维的,所以这是一个二维的轨道,我正在计算。 我现在已经设置好了,在更新循环中,它计算物体上的每个物体的力,由这个力产生的加速度以及由于这个加速度引起的速度变化。 如果我正在通过更新循环每秒一千次,这可能会正常工作,但是在iPhone 6+模拟器上,我每秒钟经历约30次,这是一个非常宽的离散化,使得轨道的对象非常不稳定。 因此,我正在寻找一个方程,告诉我轨道物体的位置是时间的函数; 因此,力,加速度和速度不是离散的,所以模拟是准确的。 我正在寻找的一个例子是Kerbal Space Program如何提前计算轨道path。 有什么想法吗? 谢谢。

如何在屏幕的某些部分移动精灵模仿鼠标/触摸位置?

我觉得困难,我一直在做错。 我想移动精灵相对触摸。 就像当你像1943年玩太空射击游戏一样。我只是在学习一些math,并试图模仿自己的控制,但迄今为止我还没有运气。 我有一些代码片断,但它并不完美,我可以相对移动这个精灵,但是当我第一次触摸移动的时候,它会一直跳起来。 这是我到目前为止: 当触摸移动时: void Trooper::onTouchMoved(cocos2d::Touch * touch, cocos2d::Event * event) { mPreviousTouchPosition = mTouchMovePosition; mTouchMovePosition = touch->getLocation(); cocos2d::Vec2 delta = utility::Object::getPosition() + (mTouchMovePosition – mPreviousTouchPosition); delta = utility::Object::getContainingScene()->convertToNodeSpace(delta); utility::Object::setPositionTo(delta); CCLOG("Coordinates when moved : %f , %f" , delta.x , delta.y); } 这里是我login的数据,移动坐标的第一行似乎对我来说是exception的: Coordinates on touch : 633.746338 , 395.874329 Coordinates when moved […]

如何更新过时的iOS应用程序中的Cocos2D?

有没有办法将旧版本的cocos2d升级到最新版本或支持64位ios的2.2.6版本?