我有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度等的东西.
如何检查日期是否天生就是明天?
我不想在今天这样的日期添加小时或任何东西,因为如果今天已经存在22:59
,那么增加太多将会持续到第二天,并且如果12:00
明天错过时间会增加太少.
我怎样才能检查两个NSDate
并确保一个明天相当于另一个?
我试图通过尝试完成简单的事情来掌握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)
哪个不给我一个错误,但它也不起作用.我意识到我不理解一些基本的东西,但任何人都可以引导我朝着正确的方向前进吗?
如何在运行的动作中禁用触摸检测,因为如果玩家在动作中单击并单击,我不希望角色像超人一样在天空中飞行,如果角色不断点击,角色将永远不会降落.我发现方法"isDone",是否与此方法有关?玩家点击 - >动作(不能在动作中点击) - >动作完成 - >再次点击.....这就是我想要的〜
我测试了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) 我还没有找到关于如何正确设置iOS手势识别器的教程.我需要检测向上和向下滑动,以及它们的回调.
任何帮助,赞赏.谢谢.
我正在开发一款游戏,我希望在网格上的一系列精灵下创建阴影.阴影大于精灵本身,精灵是动画的(即移动和旋转).
我不能简单地将它们渲染到精灵png中,否则阴影会与相邻的精灵重叠.
我也不能简单地将阴影放在较低的层上,因为当它们重叠时,它们会在它们的交叉处产生暗带.
这些精灵是动画的,因此不可能整体渲染这些精灵.
基本上,我希望精灵的阴影能够融合在一起,使它们在设定的不透明度下最大化.例:
我相信这相当于一个openGL混合(Rs,Gs,Bs,Max(As,Ds)),我并不真正关心R,G和B,因为它在src中始终是相同的颜色和dst.
但是,这不是有效的openGL混合模式.有没有一种简单的方法来实现这一点,尤其是在cocos2d-iphone中?
我可以通过使阴影精灵不透明,然后将它们应用于父精灵,并使父精灵40%不透明度来近似.但是,cocos2d的工作方式,这只会将每个子项的不透明度设置为40%,而不是组合的精灵图像,这会产生相同的条带.
我有一个CCLayer与我的应用程序的开始菜单,我想在后台播放一部短片.我已经成功地在glView中播放了一部电影,但是当它播放时,菜单没有被描绘出来.为了处理电影,我实例化了一个MPMoviePlayerController然后我以这种方式将它的视图添加到glView:
[[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view];
Run Code Online (Sandbox Code Playgroud)
我看到这个问题非常相似
但我想知道是否有更好的解决方案,可能会让我仍然利用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) 应用程序:两个拥有庞大客户群的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与通常的声音问题(静音开关,音量)无关.一部分声音继续正常播放,但在设备断电并重新启动之前,它们永远不会再次播放.
如果有人有我的想法,我会非常感谢你的帮助.我在这里试图修复一个我无法重新创建的持久性错误,这似乎是由我无法控制的东西造成的.
如果我有兴趣在iPhone/iPAD上进行游戏开发,那么有哪些技术可以开始研究?事实上,只是关于这些技术的一个简单的子弹,突出它如何适合典型的游戏开发将是伟大的,因为这个问题的原因是我不理解这些如何组合在一起.所以在这种情况下,这些大致适合这里:
我得到的印象是cocos2D将成为可行的方式,它似乎是一个更简单的OpenGL包装器?不知道UIKit vs Core Animation与QuartzCore之间的位置是什么?
cocos2d-iphone ×10
iphone ×6
ios ×4
objective-c ×4
opengl-es ×2
audio ×1
box2d ×1
box2d-iphone ×1
cocoa-touch ×1
graphics ×1
openal ×1
quartz-core ×1
xcode ×1