2015-03-25 4 views
1

Я работаю в Spritekit, и я довольно новичок в этом. Я создаю игру с уровнями и для каждого уровня, я пытаюсь расположить спрайтов в моей игре, чтобы быть пропорциональным размеру экрана. Я называю их позиции из файлов plist. Поскольку я позиционируют каждый спрайт в соответствии с размерами экрана и размера, я бы поместить это что-то вроде этогоПреобразование CGPoint из Plist

Sprite.position = CGPointMake(self.scene.size.width /2, self.scene.size.height /2); 

Мой вопрос, как я был бы в состоянии превратить эту позицию из моего списка свойств? Я попытался с помощью

Sprite.position = CGPointFromString(level[@"Sprite"]); 

и набрав

CGPointMake(self.scene.size.width /2, self.scene.size.height /2); 

в моем файле Plist, но это не работает.

ответ

1

Это, как получить доступ к данным из списка свойств:

NSString* path = [[ NSBundle mainBundle] bundlePath]; 
NSString* finalPath = [ path stringByAppendingPathComponent:@"MyGameData.plist"]; 
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath]; 

Самый простой способ, вероятно, будет хранить х и у позиции в 2-х отдельных строк. Что-то вроде PlayerPositionX и PlayerPositionY

Затем преобразовать строку в число с плавающей точкой, как это:

float myFloat = [myString floatValue]; 

Вы можете также преобразовать одну строку в CGPoint так:

CGPoint myPoint = CGPointFromString([NSString stringWithFormat:@"{%@}",textField.text]); 

Строка имеет быть в формате {x, y}

(кредит для jrturton за его ответ here).

0

Вы могли бы решить проблему размещения ваших спрайтов пропорционально размеру экрана следующим образом:

Сначала вы создаете свой PLIST, как это:

Sprite = { 
    x = 20; 
    y = 20; 
} 

Тогда вы можете, очевидно, получить значения с :

NSDictionary *spriteInfo = plist[@"Sprite"]; 
NSNumber *xPosition = spriteInfo[@"x"]; 
NSNumber *yPosition = spriteInfo[@"y"]; 

Теперь вы можете интерпретировать эти значения двумя способами:

  • Они представляют позицию ваш спрайт должен быть на экране по умолчанию (например: 320x568), и вы получите реальное положение с:

    actionPosition = xPosition * screenSize/defaultScreenSize; 
    //ex: 40 = 20 * 640/320, if the current device has a width of 640. 
    
  • Или представляют% значения, иначе спрайт должен быть 20% экрана, таким образом, вы получите фактическую позицию:

    actionPosition = screenSize * xPosition/100; 
    //ex: 128 = 20 * 640/100, if the current device has a width of 640. 
    
Смежные вопросы