小编Lea*_*s2D的帖子

月球着陆器游戏需要什么数学?

我想建立一个游戏来学习cocos2d.Lunar lander是我脑海中的第一个练习.任何指针/源代码/所需的物理计算教程将不胜感激.谢谢!

iphone physics cocos2d-iphone

12
推荐指数
2
解决办法
3172
查看次数

多点触控不适用于iPhone的cocos2D

我对cocos2D非常熟悉(已经使用它超过1年了)我遇到了一个问题multitouch- 我的游戏 - multitouch.

我拥有的:
[glView setMultipleTouchEnabled:YES] 在我的代表中.一个playscene不实现触摸的.
添加到playcene的许多对象(我自己的,继承CCLayer).
这些对象实现了触摸并且是目标协议的委托.
[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

在cocos2D的触摸测试中使用了相同的架构并且它正在工作.唯一的区别是它们使用CCSprite而不是CCLayer作为对象的父类.

有没有人有任何想法?

iphone multi-touch cocos2d-iphone

12
推荐指数
1
解决办法
765
查看次数

更改具有physicsBody的SKSpriteNode的位置

我无法通过更改来更改SKSpriteNode的位置

self.position = newPosition;
Run Code Online (Sandbox Code Playgroud)

如果它有物理实体,它就不再起作用了.

我得到的解决方法是:

    self.myStar.physicsBody = nil;

    [self.myStar changePosition];

    self.myStar.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.myStar.size.width/2];
Run Code Online (Sandbox Code Playgroud)

要么

    [self runAction:[SKAction moveTo:newPosiion duration:0.0]];
Run Code Online (Sandbox Code Playgroud)

但#2并不顺利.它需要在没有移动动作的情况下弹出另一个位置.

objective-c ios sprite-kit

12
推荐指数
2
解决办法
7213
查看次数

移动棒图,锚点,动画或其他东西......?

好了,所以我正在用棍子数字游戏,在目标C的cocos2d ......不同的事情需要这么动画请,给我的是什么将去完成这些事物运动的最佳方法建议:

  1. 主角 - 他是左下角的弓箭手,不会四处移动,除非他会移动他的上身,因为你需要改变射击角度的角度......

  2. 敌人 - 成群结队的棍子数字会发生碰撞检测并在被箭头精灵射击时死亡.

我该怎么做1和2移动?我应该掌握锚点并使用它们吗?(我真的很讨厌笨anchorpoints他们是如此难以得到工作...但我会使用这些,如果他们是更好的),或者使吨动画,或者是有其他许多精灵合并成一个单一的运动更简单的方法?

iphone objective-c cocos2d-iphone ccnode

11
推荐指数
1
解决办法
2892
查看次数

混合C++和Objective-C

我使用C++作为应用主干和Objective-C用于GUI,这很好.

但是当谈到在Objective-C++(.mm文件)中将这些代码混合在一起时,我有一些问题:

1.我可以将STL容器与Objective-C或Cocos2D对象混合使用吗?

例如,在Objective-C标题中,我可以执行以下操作吗?

#include <vector>
#include <boost\shared_ptr.hpp>
@interface MyClass : NSObject {
  std::vector<boost::shared_ptr<CCSprite> > m_spriteList;
}
Run Code Online (Sandbox Code Playgroud)

然后在.mm文件中,我想做

CCSprite* newSprite = [/* cocos2d stuff here... */];
m_spriteList.push_back(newSprite);
Run Code Online (Sandbox Code Playgroud)

以上代码有效吗?它肯定是在C++中,但我不确定混合C++和Objective-C和Cocos2D.

2.使用Objective-C中的C++智能指针对象进行内存管理?

当我尝试在Objective-C中使用C++代码时,我想在Objective-C头文件中将C++对象声明为成员变量.

假设我在test.h标头中声明了一个C++类:

Test{
};
Run Code Online (Sandbox Code Playgroud)

在Objective-C头文件中,我想做

#include "test.h"
#incude <boost/scoped_ptr.hpp>

#include <vector>
@interface MyClass : NSObject {
   Test* m_testObjectPtr; // (1)
   boost::scoped_ptr<Test>  m_testOjbSmartPtr; // (2)
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,是(2)好吗?我可以像在C++代码中一样在Objective-C中使用智能指针吗?我可以假设在Test销毁MyClass对象时会调用类析构函数吗?

或者如果(2)在Objective-C++中不合适,(1)好吗?我需要手动调用 delete m_testObjectPtrdealloc

c++ boost smart-pointers objective-c cocos2d-iphone

11
推荐指数
1
解决办法
4638
查看次数

如何将NSValue转换为NSData并返回?

A有一些NSValue(通过KVC获得valueForKey)我需要附加到一个NSData对象,以便使用Game Center通过网络发送它.显然,我还需要将NSValue背面转换NSData为更多的KVC(setValue:forKey:).

我不知道每一个确切的类型NSValue,所以我仅限于使用所提供的接口NSValueNSData.我应该提一下,NSValue它们永远不是指针类型.

我很惊讶没有[NSData dataWithValue:value],也没有[value dataWithEncoding:]类似的东西.但也许我是盲目的,没有看到明显的选择.我考虑过使用getValue:将值复制到void*缓冲区中,但除了使用objCType并将其与所有可能的类型进行比较之外,我应该如何确定缓冲区长度?

我该怎么办呢?

注意: NSKeyedArchiver这是不可能的,因为它非常低效.4字节浮点数归档为142字节NSData,8字节CGPoint归档时使用260字节NSData.将发送的数据量保持在最低限度对我正在做的事情至关重要.

objective-c key-value-coding nscoding nsdata

11
推荐指数
1
解决办法
5087
查看次数

如果条件是假的,那么"什么都不做"(noop)的三元表达?

出于好奇,我开始想知道是否有可能有三元表达式,如果它的计算结果为假,则在假分支中不执行任何操作.

也就是有办法写这样的东西:

variable = (someBool) ? i : <do nothing>;
Run Code Online (Sandbox Code Playgroud)

相反:

if (someBool) {
    variable = i;
}
Run Code Online (Sandbox Code Playgroud)

我尝试过((void)0)while(false){};作为无操作但编译器需要一个表达式.

更新:

我意识到问题失去了一些意义,因为我试图让代码更容易.我最初的想法是使用三元数初始化静态变量 - 使用静态变量本身作为条件:

static int var = (var != 0) ? var = 1 : (var already initialized, do nothing);
Run Code Online (Sandbox Code Playgroud)

这假设未初始化的变量初始化为0,这并不总是正确的(或者永远不会在发布版本中,不太确定).所以也许这是一个假设的问题.

c c++ objective-c ternary-operator

11
推荐指数
2
解决办法
5786
查看次数

如何为SKShapeNode设置小于1的lineWidth?

我正在尝试制作一个具有非常思考笔画的SKShapeNode(如0.25像素).似乎lineWidth为1是我可以去的最小值,至少在屏幕上看起来是这样的,无论是什么值设置为小于1.

SKShapeNode *buttonOutline;
buttonOutline = [[SKShapeNode alloc] init];

CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddRoundedRect(myPath, NULL, CGRectMake(0, 0, 100, 30), 10, 10);    
buttonOutline.path = myPath;
buttonOutline.strokeColor=[SKColor grayColor];

buttonOutline.lineWidth= 0.25;

buttonOutline.name = [NSString stringWithFormat:@"%@-buttonOutline", thisButtonName];
buttonOutline.position =  CGPointMake(thisXPos,thisYPod);
buttonOutline.alpha = 1;
Run Code Online (Sandbox Code Playgroud)

objective-c ios sprite-kit skshapenode

11
推荐指数
1
解决办法
2961
查看次数

Swift Sound重播

我有这个功能,我在第一个场景中生活:

    func ThemeSound() {
        if let path = NSBundle.mainBundle().pathForResource("InfinityThemeMain", ofType: "wav") {
            let enemy1sound = NSURL(fileURLWithPath:path)
            println(enemy1sound)

            var error:NSError?
            ThemePlayer = AVAudioPlayer(contentsOfURL: enemy1sound, error: &error)
            ThemePlayer.prepareToPlay()
            ThemePlayer.play()
        }
    }
Run Code Online (Sandbox Code Playgroud)

但问题是,它只播放一次主题.我需要它重复播放.我以为我知道如何实现这一目标.

runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.runBlock(ThemePlayer), SKAction.waitForDuration(2.55)]))
Run Code Online (Sandbox Code Playgroud)

但是我不能粘贴在ViewController中,因为runAction需要一个子连接它.我能用其他任何方式吗?

ios sprite-kit swift

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

Cocos2D Bezier围绕物体弯曲,好像是在重力作用下

我正试图操纵一个物体.当它接近另一个物体时,让我们说一个地球仪,我希望地球对原始物体有一个引力.我知道我应该使用CCBezierTo,所以这不是一个编程问题,因为它是一个数学问题.

在数学上,我怎么能找出贝塞尔曲线的三个点(1,2和结束)并根据它的距离赋予它一个权重(更远的距离=更少的拉力).我已经在变量中绘制了距离.

想象一下在月球周围弹射的宇宙飞船.

码:

ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(projectile.position.x + 10, projectile.position.y + 20);
bezier.controlPoint_2 = ccp(projectile.position.x + 20, projectile.position.y + 40);
bezier.endPosition = ccp(projectile.position.x + 30, projectile.position.y+60);
id bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];
[projectile stopAllActions];
[projectile runAction: bezierAction];
Run Code Online (Sandbox Code Playgroud)

bezier physics objective-c gravity cocos2d-iphone

10
推荐指数
1
解决办法
2358
查看次数