2015-10-05 3 views
1

Я пытаюсь проверить при столкновении, если текстура bodyAA называется «playerpc». Если это так, я хочу запустить действие, но я не могу понять, как проверить.Как сравнить 2 текстуры SKSpritenodes

код я использую прямо сейчас:

   var testnode = SKSpriteNode(imageNamed: "playerpc") 
       print(testnode.texture) 
       if bodyAA.texture == testnode.texture{ 
        print("Yes the same") 
       } 
       else{ 
        print(bodyAA.texture) 
       } 

Это результат из консоли:

Optional(<SKTexture> 'playerpc' (153 x 274)) 
Optional(<SKTexture> 'playerpc' (153 x 274)) 

Так оно и должно быть то же самое! но когда он сравнивается, мой код решает, что это не одно и то же, как я могу это исправить?

+0

потому что вы должны указать, что вы сравниваете в текстурах, потому что оно имеет свои собственные свойства. –

ответ

3

texture факультативно SKTexture. Поэтому для сравнения вы должны развернуть его и проверить в соответствии с описанием следующим образом:

if bodyAA.texture!.description == testnode.texture!.description{ 
        print("Yes the same") 
       } 
       else{ 
        print(bodyAA.texture) 
       } 
+0

Мне это нравится и используйте его в моем коде. Поскольку текстуры различаются по размеру в зависимости от того, используете ли вы не сетчатку, устройство 2x или 3x, и мне нужно сделать сравнение с жестко закодированным именем текстуры, я делаю сравнение с 'if bodyAA.texture! .description.hasPrefix ("...") {' – NerdyTherapist

Смежные вопросы