标签: cocos2d-iphone

从2个位置获取角度

我有2个物体,当我移动一个物体时,我想从另一个物体获得角度.

例如:

Object1X = 211.000000, Object1Y = 429.000000
Object2X = 246.500000, Object2Y = 441.500000
Run Code Online (Sandbox Code Playgroud)

我在阳光下尝试过以下各种变化:

double radians = ccpAngle(Object1,Object2);
double degrees = ((radians * 180) / Pi); 
Run Code Online (Sandbox Code Playgroud)

但我只是得到2.949023返回我想要45度等的东西.

cocos2d-iphone ios

20
推荐指数
3
解决办法
3万
查看次数

目标C - 从今天(明天)开始第二天

如何检查日期是否天生就是明天?

我不想在今天这样的日期添加小时或任何东西,因为如果今天已经存在22:59,那么增加太多将会持续到第二天,并且如果12:00明天错过时间会增加太少.

我怎样才能检查两个NSDate并确保一个明天相当于另一个?

iphone objective-c cocos2d-iphone ios

20
推荐指数
2
解决办法
9523
查看次数

如何用Cocos2d-iPhone绘制一条线

我试图通过尝试完成简单的事情来掌握Cocos2d.此时,我有一个场景,那个场景有一个背景精灵和一个图层.我正在尝试使用drawLine绘制图层.这是我目前的尝试.

@implementation MyLayer
-(id)init{
    self = [super init];
    if(self != nil){
        glColor4f(0.8, 1.0, 0.76, 1.0);  
        glLineWidth(2.0f);
        CocosNode *line = drawLine(10.0f, 100.0f,400.0f,27.0f);
        [self addChild:line z:1];
    }
    return self;
}
@end
Run Code Online (Sandbox Code Playgroud)

这会产生错误"空值不被忽略,因为它应该是".显然我做错了,但希望你能看出我的推理.

我也试过这个

-(id)init{
    self = [super init];
    if(self != nil){
        glColor4f(0.8, 1.0, 0.76, 1.0);  
        glLineWidth(2.0f);
        drawLine(10.0f, 100.0f,400.0f,27.0f);
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

哪个不给我一个错误,但它也不起作用.我意识到我不理解一些基本的东西,但任何人都可以引导我朝着正确的方向前进吗?

iphone cocoa-touch objective-c cocos2d-iphone

19
推荐指数
3
解决办法
5万
查看次数

如何禁用触摸检测?

如何在运行的动作中禁用触摸检测,因为如果玩家在动作中单击并单击,我不希望角色像超人一样在天空中飞行,如果角色不断点击,角色将永远不会降落.我发现方法"isDone",是否与此方法有关?玩家点击 - >动作(不能在动作中点击) - >动作完成 - >再次点击.....这就是我想要的〜

iphone objective-c cocos2d-iphone

19
推荐指数
3
解决办法
2万
查看次数

Coco2d 2.1和Xcode 7 iOS 9崩溃了ccShader

我测试了Xcode 7,但我的cocos2d 2.1游戏在模拟器或设备上崩溃:

ccShader_PositionColorLenghtTexture_frag.h

2015-06-15 22:36:13.319 NanoWar[18789:456971] cocos2d: ERROR: 0:12: '' : syntax error: #extension must always be before any non-preprocessor tokens
Run Code Online (Sandbox Code Playgroud)

cocos2d: ERROR: 0:26: Invalid call of undeclared identifier 'fwidth'
Run Code Online (Sandbox Code Playgroud)

这堂课让游戏崩溃了

#extension GL_OES_standard_derivatives : enable                                                                             

#ifdef GL_ES                                                                                                                
varying mediump vec4 v_color;                                                                                               
varying mediump vec2 v_texcoord;                                                                                            
#else                                                                                                                       
varying vec4 v_color;                                                                                                       
varying vec2 v_texcoord;                                                                                                    
#endif                                                                                                                      

void main()                                                                                                                 
{                                                                                                                           
#ifdef GL_OES_standard_derivatives                                                                                          
#if defined GL_OES_standard_derivatives                                                                                     
    gl_FragColor = v_color*smoothstep(0.0, length(fwidth(v_texcoord)), 1.0 - length(v_texcoord));                           
#else                                                                                                                       
    gl_FragColor = v_color*step(0.0, 1.0 - length(v_texcoord));                                                             
#endif                                                                                                                      
#endif                                                                                                                      
}
Run Code Online (Sandbox Code Playgroud)

xcode cocos2d-iphone

19
推荐指数
3
解决办法
6395
查看次数

适当的滑动手势识别器iOS

我还没有找到关于如何正确设置iOS手势识别器的教程.我需要检测向上和向下滑动,以及它们的回调.

任何帮助,赞赏.谢谢.

box2d cocos2d-iphone box2d-iphone

18
推荐指数
1
解决办法
2万
查看次数

是否有可能实现MAX(As,Ad)openGL混合?

我正在开发一款游戏,我希望在网格上的一系列精灵下创建阴影.阴影大于精灵本身,精灵是动画的(即移动和旋转).

我不能简单地将它们渲染到精灵png中,否则阴影会与相邻的精灵重叠.

我也不能简单地将阴影放在较低的层上,因为当它们重叠时,它们会在它们的交叉处产生暗带.

这些精灵是动画的,因此不可能整体渲染这些精灵.

基本上,我希望精灵的阴影能够融合在一起,使它们在设定的不透明度下最大化.例:

在此输入图像描述

我相信这相当于一个openGL混合(Rs,Gs,Bs,Max(As,Ds)),我并不真正关心R,G和B,因为它在src中始终是相同的颜色和dst.

但是,这不是有效的openGL混合模式.有没有一种简单的方法来实现这一点,尤其是在cocos2d-iphone中?

我可以通过使阴影精灵不透明,然后将它们应用于父精灵,并使父精灵40%不透明度来近似.但是,cocos2d的工作方式,这只会将每个子项的不透明度设置为40%,而不是组合的精灵图像,这会产生相同的条带.

iphone graphics alphablending opengl-es cocos2d-iphone

17
推荐指数
1
解决办法
3767
查看次数

cocos2d:在菜单背景中播放视频

我有一个CCLayer与我的应用程序的开始菜单,我想在后台播放一部短片.我已经成功地在glView中播放了一部电影,但是当它播放时,菜单没有被描绘出来.为了处理电影,我实例化了一个MPMoviePlayerController然后我以这种方式将它的视图添加到glView:

[[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view];
Run Code Online (Sandbox Code Playgroud)

我看到这个问题非常相似

电影播放时如何设置菜单 - iphone cocos2d

但我想知道是否有更好的解决方案,可能会让我仍然利用cocos2d框架实体(而不是我自己的观点).

我试图以这种方式发送moviePlayer.view

[theView sendSubviewToBack:moviePlayer.view];
Run Code Online (Sandbox Code Playgroud)

但菜单仍被电影隐藏......

(很多个小时后..)

好的,你可以在第一个评论中读到我已经意识到(可能)唯一的方法是利用自定义视图.我这样做了,它通过在moviePlayer.view之后向glView添加任何视图在模拟器中运行.然而,当我在3.1.3 FW的目标IPod触摸上运行它时,电影视图始终位于顶部.因此我意识到MPMoviePlayerController实际上创建了自己的窗口和自己的视图.一些帖子(比如Streaming MPMoviePlayerController顶部的Overlay)建议拦截加载新窗口的事件,然后才添加子视图.

这就是我试图做的事情,但该事件实际上从未在模拟器上或在目标Ipod上捕获.因此我添加了一个预定的选择器 - (void)更新,它以这种方式实现:

-(void) update{
    NSArray *windows = [[UIApplication sharedApplication] windows];
    if ([windows count] > 1)
    {
    UIImageView *logo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]];
    UIView *theView = [[CCDirector sharedDirector] openGLView];
    [logo setCenter:ccp(240,80)];
    [moviePlayer.view addSubview:logo];
        [self unscheduleAllSelectors];
    }
}
Run Code Online (Sandbox Code Playgroud)

但这部电影仍然保持领先

请大家帮忙,非常感谢!

(几天后......)我还等了2秒,电影实际上正在运行,将我的徽标视图添加为电影播放器​​的子视图.它在模拟器上正常工作,但在Ipod(3.1.3)上,它得出了不同的结果.第一次播放电影时,未显示徽标(电影在顶部).然而,因为一旦电影结束,播放方法就被整理,从第二次开始,在背景上用电影描绘徽标(是我愿意).这对你有意义吗?

我真的需要了解如何解决这个问题,我在2个月内成功开发游戏是非常荒谬的,现在我在开始菜单中被困2周了:)

无论如何,如果我已经决定粘贴我试图修复的图层的整个代码,以便您可以更好地弄清楚问题是什么(或者至少这是我的希望:))

+(id) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c cocos2d-iphone

17
推荐指数
1
解决办法
1万
查看次数

OpenAL随机停止播放一些声音,只能通过重启修复

应用程序:两个拥有庞大客户群的Cocos2d通用iOS游戏.

问题:几个月前(2011年)报道开始报道,声音会随机切断,只有部分声音会在应用中播放,有些则不会.此问题只能通过设备重新启动来解决.

重要注意事项和细节:

  • SAME代码和SAME声音文件播放时间超过一年,没有此类错误报告.我希望我能确定一个日期,但我相信问题始于iOS更新.

  • 这个bug难以复制.我亲眼看过一次,但我再也没有运气了.然而,我们每天会收到1-2封支持相同问题的电子邮件,其中一些是以糟糕的评论形式出现的.如果我不得不从空中拉出一个数字,我猜我们正在考虑1000的发病率.它似乎在iPad上更常见,但我不确定.

  • 重新启动设备是解决问题的唯一方法.重新启动应用程序什么都不做,删除应用程序并重新安装什么都不做,必须关闭电源并重新打开.

  • 几个星期前试图盲目修复我倾倒了Cocos2d声音引擎并将其中一个应用程序切换到ObjectAL(另一个基于openAL的声音引擎),希望它可能已经解决了问题.它没有,同样的问题正在发生.正如您所注意到的,这两者都只是OpenAL的接口.

  • 使用Apple的推荐方法(https://developer.apple.com/library/ios/#codinghowtos/AudioAndVideo/_index.html )将声音文件本身从wav转换为cafs ,尽管我们也使用了-c 1标志来制作他们是单一渠道.

  • 需要明确的是,该bug与通常的声音问题(静音开关,音量)无关.一部分声音继续正常播放,但在设备断电并重新启动之前,它们永远不会再次播放.

如果有人有我的想法,我会非常感谢你的帮助.我在这里试图修复一个我无法重新创建的持久性错误,这似乎是由我无法控制的东西造成的.

audio openal cocos2d-iphone ios

17
推荐指数
1
解决办法
980
查看次数

从哪里开始进行游戏开发?UIKit vs Core Animation vs QuartzCore vs OpenGL vs cocos2D

如果我有兴趣在iPhone/iPAD上进行游戏开发,那么有哪些技术可以开始研究?事实上,只是关于这些技术的一个简单的子弹,突出它如何适合典型的游戏开发将是伟大的,因为这个问题的原因是我不理解这些如何组合在一起.所以在这种情况下,这些大致适合这里:

  • UIKit的
  • 核心动画
  • QuartzCore
  • OpenGL的
  • cocos2D上

我得到的印象是cocos2D将成为可行的方式,它似乎是一个更简单的OpenGL包装器?不知道UIKit vs Core Animation与QuartzCore之间的位置是什么?

iphone opengl-es cocos2d-iphone ios quartz-core

16
推荐指数
1
解决办法
5178
查看次数