小编Lea*_*s2D的帖子

你如何阻止粒子效应?(SKEmitterNode)

我目前在碰撞语句中有这个代码,如果与对象发生碰撞,那么这个粒子会发生,但我该怎么做呢?因为它永远持续下去,而我只希望每次接触发生几次

SKEmitterNode *emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle]     pathForResource:@"ff" ofType:@"sks"]];
emitter.zPosition = 0;
emitter.particlePositionRange = CGVectorMake(0, self.size.height);
emitter.position = CGPointMake(self.size.width, self.size.height/2);
[self addChild:emitter];
Run Code Online (Sandbox Code Playgroud)

particles sprite-kit skemitternode

16
推荐指数
2
解决办法
8882
查看次数

每次重新启动iPhone App时,NSHomeDirectory都会返回不同的路径

我注意到NSHomeDirectory每次使用Xcode重新启动App时返回不同的路径,显然即使我手动点击图标,因为它没有加载文件的内容.每次重新启动应用程序时,我都惊呆了它给了我一个不同的目录.这发生在模拟器和设备上,即使我使用"ForUser"方法.我的电话看起来像这样:

NSString* fullPath = [NSHomeDirectory() stringByAppendingPathComponent:@"test.file"];
Run Code Online (Sandbox Code Playgroud)

要么

NSString* fullPath = [NSHomeDirectoryForUser(@"MrX") stringByAppendingPathComponent:@"test.file"];
Run Code Online (Sandbox Code Playgroud)

甚至

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent:@"test.file"];
Run Code Online (Sandbox Code Playgroud)

两个应用程序启动的日志如下所示,请注意GUID部分的更改方式:

loadCharacters: /var/mobile/Applications/ABE7E33E-439B-4258-8FC1-127A3CD00D87/test.file
loadCharacters: /var/mobile/Applications/71C02507-6347-4693-8CC1-537BE223179E/test.file
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者我错过了什么?

解:

起初我保存到NSHomeDirectory本身,而不是"Documents"子目录.由于App目录随每次部署而变化,但只复制了"Documents"目录中的文件,因此每次部署后保存的文件都会丢失.然后我使用了"Documents"文件夹,但是有人建议我应该把它放在"Documents"的子文件夹中,我只是这样做但是忘了创建文件夹,因此文件没有保存.我在这一次双重失败.:)

只需保存到NSHomeDirectory()+"Documents/test.file"即可.

iphone objective-c iphone-sdk-3.0

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

如果没有其他引用保留对象,如何在ARC下的C++ void*成员中安全地存储id对象?

我正在使用Box2D(C++)并创建一个Objective-C对象并将其分配给Box2D正文的userData属性,该属性属于类型void*.

现在在某些情况下,它void* userData可能是该ObjC对象的唯一活动引用.因此,因为我(__bridge void*)在作业中使用过,所以ARC正在放手.这是我需要解决的问题.

我一直在思考防止这种情况发生的选择吗?我阅读了Clang的ARC文档,特别是关于桥梁铸造的部分(以及关于SO的Q&A)以及对他们认为"形成不良"的各种桥梁铸造结构的点头.

不过,我的第一个想法是(__bridge_retained void*)在初始分配给userData时使用.但这让我想知道如何平衡保留?我显然无法向对象发送释放.

那么我必须要CFRelease()对象吗?还是需要CFBridgingRelease()?或者在这里都是非法的?

是否(__bridge_transfer void*)userData一个临时id类型转换为足够的,也许在之后将userData设置为NULL?这是一个好主意吗?

我所知道的替代办法是保留独立NSArray/ NSDictionaryuserData对象,让他们在与Box2D的身体的寿命同步,添加和同步与他们的Box2D的身体移除它们.

但这感觉就像矫枉过正,因为在这里我知道我在做什么,我知道+1只要Box2D主体处于活动状态-1就需要对象,并且当Box2D主体被移除时我需要对象.另外我知道只有两种方法可以添加和删除Box2D主体,并且userData在我的框架中甚至无法直接访问,因为所有Box2D对象都隐藏在Objective-C接口/包装器后面.

暂时搁置"不良形式",你会建议我在这种情况下做什么?

casting objective-c void-pointers automatic-ref-counting

15
推荐指数
1
解决办法
3404
查看次数

如何抛出SKSpriteNode?

所以基本上在我的游戏中我需要抛掷或抛出一个物体.到目前为止,我有一个精灵,它可以被拖动,但它不能被抛出.游戏的想法是抛出一个精灵与另一个精灵碰撞.我想要我们将调用testNode的精灵,移动用户抛出它的方式

意思是,当我释放精灵时,我希望它继续向我移动它的方向.我花了很多年时间试图解决这个问题,但我不能.我正在使用适用于iOS 8+的SpriteKit.如果有人可以提供帮助请.

这是我看过的视频,但它与GameSalad有关,这是另一个故事.你可以看看

https://www.youtube.com/watch?v=nn3lWa5jUGE

(如果您需要进一步联系,请回复)

import Foundation;
import SpriteKit;

class Level:SKScene {

TestNode:Test? //Test is a class I made

//Removed the update and touches began due to it being irrelevant to what I need help with. 

  override func didMoveToView(view: SKView){
    testNode = Fruit(imageNamed: "apple_idle")
    testNode?.position = CGPointMake(60, 294)
    testNode?.xScale = 0.5
    testNode?.yScale = 0.5
    self.addChild(testNode!)
  }
  override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

    var nodeTouched = SKNode()
    var currentNodeTouched = SKNode()

    for touch: AnyObject in touches {
        let …
Run Code Online (Sandbox Code Playgroud)

ios sprite-kit swift

15
推荐指数
1
解决办法
3988
查看次数

cocos2d中有多个ParticleSystems

我想知道我应该走哪条路ParticleSystem.在这个特殊情况下,我想同时创建1-20个小爆炸,但位置不同.现在我正在ParticleSystem为每次爆炸创造一个新的,然后释放它,但当然这对性能非常不利.

我的问题是:有没有办法创建一个ParticleSystem具有多个发射源的方法.如果不是,我应该ParticleSystem在init中创建一个数组,然后在需要爆炸时使用一个免费的数组?还是有另一种我没有想过的方法?

optimization cocos2d-iphone

14
推荐指数
1
解决办法
2711
查看次数

Sprite-Kit:Sprite z-Order

如何在Sprite-Kit中更改Sprite的z顺序?

Cocos2d代码:

[parentNode addChild:sprite1 z:3];
[parentNode addChild:sprite2 z:2];
[parentNode addChild:sprite3 z:1];
Run Code Online (Sandbox Code Playgroud)

我在Sprite-Kit中尝试了下面的代码.但它没有改变z顺序

[parentNode insertChild:sprite1 atIndex:3];
[parentNode insertChild:sprite2 atIndex:2];
Run Code Online (Sandbox Code Playgroud)

sprite-kit

14
推荐指数
1
解决办法
8068
查看次数

如何在脚本中修改RectTransform属性[Unity 4.6 beta]

在此输入图像描述

您好,我正在使用Unity 4.6测试版的新UI系统...

尝试了不同的代码,查看了文档并搜索了但却找不到答案......

例如.我有一个图像,我想在运行时更改宽度和高度.

public GameObject image4;
image4.GetComponent<RectTransform>().rect.Set(0,0,100, 300);
Run Code Online (Sandbox Code Playgroud)

这不起作用.而image4.GetComponent().rect.y只是GET,因此无法在运行时更改.

我也尝试过:

image4.transform.localScale.y = 15;
Run Code Online (Sandbox Code Playgroud)

这也不起作用.

什么是在运行时更改大小的正确方法?你可以用JS或C#给我一个例子,没关系.

unity-game-engine

14
推荐指数
2
解决办法
6万
查看次数

GKLocalPlayer和saveGameData的问题

我想用GKLocalPlayer和saveGameData方法保存游戏数据.

[localPlayer saveGameData:playerData withName:@"SolarFlares" completionHandler:^(GKSavedGame *savedGame, NSError *error) {
    if (savedGame != nil) {
        NSLog(@"Player data saved to GameCenter");
    }else{
        NSLog(@"Player=%@ data NOT saved to GameCenter, error=%@", localPlayer, error.description);
    }
}];
Run Code Online (Sandbox Code Playgroud)

上面的代码在xcode模拟器上工作正常,但是当我在我的iPhone上尝试它时,我得到如下所示的错误代码.我无法弄清楚这一点.我无法控制它保存游戏数据的位置,那么为什么系统会尝试将其保存在没有权限的地方!?!

Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x171661f80
{NSFileOriginalItemLocationKey=file:///private/var/.DocumentRevisions-V100/PerUID/501/e4/com.apple.ubiquity/iCloud~com~MJinc~SolarFlares_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle/,
 NSURL=file:///private/var/.DocumentRevisions-V100/PerUID/501/e4/com.apple.ubiquity/iCloud~com~MJinc~SolarFlares_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle/, 
NSFileNewItemLocationKey=file:///private/var/mobile/Containers/Data/Application/EF8BC999-1D4B-42B2-B8D9-0B0A79543C03/tmp/(A%20Document%20Being%20Saved%20By%20Solar%20Flares)/iCloud~com~MJinc~SolarFla
res_A3695FA3-6BFA-4862-B53A-F01E192726CC_1a.bundle, NSUnderlyingError=0x170c48b50 "The 
operation couldn’t be completed. Permission denied"}
Run Code Online (Sandbox Code Playgroud)

// Micke ...

objective-c gamekit ios game-center

14
推荐指数
1
解决办法
711
查看次数

指向倾斜方向 - iPhone

在我的cocos2d游戏中,我有我的玩家精灵,我希望让他朝我倾斜iPhone的方向移动.我可以解决这个问题,我无法解决的最困难的是:

如何让我的精灵旋转指向我倾斜的方向?这在应用程序商店的"Tilt to Live"游戏中得到了很好的体现.我想要像这样的控件.

我的精灵(对于那些不熟悉cocos2d的人)确实有旋转值,如果有帮助的话.

谢谢.

iphone objective-c rotation accelerometer cocos2d-iphone

13
推荐指数
1
解决办法
3086
查看次数

Bakground以不同速度移动时层间没有协调

我正在使用COCOS2d Framework和Objective-C开发iPhone游戏(在横向模式/视图中).

对于游戏,我使用的是具有四层的背景(顶部为"天空",天空下方为"山",山下为"山",下方为"前景'极端).在这里,我需要以不同的速度移动背景的每一层,比如'Sky'应该比Mountain慢,'Mountain'应该比Hill慢,而'Hill'应该比前景慢.

当我以不同的速度移动每一层时,游戏在层的协调之间经历了突破.

我尝试用以下逻辑解决这个问题:根据它的速度增加图像/图层(宽度)大小,以便每一层都应该结束并开始协调再次运行.无法让它工作.

这是我移动背景的代码:

 -(void) backgroundmoving
{

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  //return kDevice_iPad;

  // Code for Each Layer's Moving Speed FOR iPad
  bk_f -=1.0;
  bk_f1 -=1.4;
  bk_f2 -=1.8;
  bk_f3 -=2.2;
 } else {

  // Code for Each Layer's Moving Speed FOR iPhone
  bk_f -=0.2;
  bk_f1 -=0.4;
  bk_f2 -=0.6;
  bk_f3 -=0.8;

 }

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

  //return kDevice_iPad;
  if (bk_f <= -920*1.1) {bk_f=0;}
  if (bk_f1 <= -920*1.1) {bk_f1=0;}
  if (bk_f2 <= -920*1.1) {bk_f2=0;}
  if (bk_f3 <= -920*1.1) …
Run Code Online (Sandbox Code Playgroud)

objective-c cocos2d-iphone

13
推荐指数
1
解决办法
132
查看次数