gpt4 book ai didi

ios - 对象的字符串数组 - sprite kit

转载 作者:行者123 更新时间:2023-11-29 02:09:05 27 4
gpt4 key购买 nike

我有一组 sksprite 节点的名称。我需要创建一个新数组并将名称放在最后一个数组中,但最接近(倾斜 - 另一个节点的名称)的 Sprite 节点将在数组中排在第一位,依此类推。如果我没有足够清楚地解释我的 self ,请告诉我。请如果有人知道该怎么做。写在这里。谢谢

最佳答案

正如我之前所说,您的问题没有具体说明具体如何实现。我使我的代码有些通用,以适应您可能想到的几乎任何场景。

我使用触摸位置坐标作为起点来计算到屏幕上 4 个节点的距离。单击屏幕上的任意位置,将打印一个列表,其中包含 4 个节点名称,按距离顺序排列。

可能有更好的排序方法,但我决定采用快速而肮脏的方法。

#import "GameScene.h"
@implementation GameScene {
SKSpriteNode *node0;
SKSpriteNode *node1;
SKSpriteNode *node2;
SKSpriteNode *node3;
NSMutableArray *nodeArray;
}

-(void)didMoveToView:(SKView *)view {
self.backgroundColor = [SKColor blackColor];
nodeArray = [[NSMutableArray alloc] init];

node0 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(10, 10)];
node0.name = @"red";
node0.position = CGPointMake(300, 300);
[self addChild:node0];
[nodeArray addObject:node0];

node1 = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(10, 10)];
node1.name = @"blue";
node1.position = CGPointMake(450, 500);
[self addChild:node1];
[nodeArray addObject:node1];

node2 = [SKSpriteNode spriteNodeWithColor:[SKColor yellowColor] size:CGSizeMake(10, 10)];
node2.name = @"yellow";
node2.position = CGPointMake(100, 400);
[self addChild:node2];
[nodeArray addObject:node2];

node3 = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(10, 10)];
node3.name = @"green";
node3.position = CGPointMake(200, 200);
[self addChild:node3];
[nodeArray addObject:node3];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

for (UITouch *touch in touches) {
CGPoint touchLocation = [touch locationInNode:self];

NSMutableArray *myArray = [[NSMutableArray alloc] init];
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];

for(SKSpriteNode *object in nodeArray) {
float xDistance = fabsf(touchLocation.x - object.position.x);
float yDistance = fabsf(touchLocation.y - object.position.y);
NSString *totalDistance = [NSString stringWithFormat:@"%f",(xDistance+yDistance)];

[myDict setValue:totalDistance forKey:object.name];
}

float lowestValue = 999999.0;
NSMutableString *lowestName = [[NSMutableString alloc] init];

for (int i=0; i<[nodeArray count]; i++) {

for (NSString *key in myDict) {

if([[myDict objectForKey:key] floatValue] < lowestValue) {
lowestValue = [[myDict objectForKey:key] floatValue];
[lowestName setString:key];
}
}

[myArray addObject:[NSString stringWithString:lowestName]];
[myDict removeObjectForKey:lowestName];
lowestValue = 999999.0;
}

NSLog(@"values: %@",myArray);
}
}

关于ios - 对象的字符串数组 - sprite kit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com