2016-08-03 10 views
1

У меня есть 2 сферы в моем проекте в том же месте. FirstSphere меньше, а tempSphere больше.Как сравнить размер двух сфер в наборе сюжетов?

EDIT: Первый вид будет расти больше, чем tempShape. Когда я паузу firstShape я пытаюсь проверить, как «если firstShape.scale == tempShape.scale»

//Create Shape 
let firstShapeGeo = SCNSphere(radius: shapeRadius) 
firstShape.geometry = firstShapeGeo 
let shapeMaterial = SCNMaterial() 
shapeMaterial.diffuse.contents = UIColor(colorLiteralRed: 0.2, green: 0.8, blue: 0.9, alpha: 1.0) 
firstShapeGeo.materials = [shapeMaterial] 
firstShape.position = SCNVector3Make(0, 0, 0) 
scene.rootNode.addChildNode(firstShape) 
firstShape.name = "\(shapeNumber)" 

// Create Temp Shape 
tempShapeRadius = shapeRadius + 1.0 

let tempShapeGeo = SCNSphere(radius: tempShapeRadius) 
tempShape.geometry = tempShapeGeo 
let tempShapeMaterial = SCNMaterial() 
tempShapeMaterial.diffuse.contents = UIColor(colorLiteralRed: 0.2, green: 0.8, blue: 0.9, alpha: 0.5) 
tempShapeGeo.materials = [tempShapeMaterial] 
firstShape.position = SCNVector3Make(0, 0, 0) 
scene.rootNode.addChildNode(tempShape) 

Это, как я расту в firstSphere

let grow = SCNAction.scale(to: tempShapeRadius * 2 + 1, duration: 1) 
let shrink = SCNAction.scale(to: tempShapeRadius, duration: 1) 

let sequence = SCNAction.sequence([grow, shrink]) 
firstShape.run(SCNAction.repeatForever(sequence)) 

Чем меньше сфера растет больше, используя SCNAction.scale, поэтому я не верю, что радиус действительно меняется. Не уверен, что это то, что вам нужно знать.

Любая помощь была бы высоко оценена! Благодаря!

ответ

1

Назначьте одинаковый радиус обеих сфер. Установите scale вашего tempShape на любое значение, которое делает нужное количество больше, чем начальное значение firstShape. Теперь вам нужно сравнить только scale.

Предположим, вы хотите, чтобы шар tempShape был в 3 раза больше размера регулируемой сферы.

let tempScale: CGFloat = 3.0 
tempShape.scale = SCNVector3(tempScale, tempScale, tempScale) 
// grow from 1 to tempScale, then back to 1 
let grow = SCNAction.scaleTo(tempScale, duration: 1) 
let shrink = SCNAction.scaleTo(1, duration: 1) 
let sequence = SCNAction.sequence([grow, shrink]) 
firstShape.run(SCNAction.repeatForever(sequence)) 
+0

Можете ли вы показать пример того, как сравнивать масштаб. Сначала я попытался сравнить масштаб, но я, казалось, продолжал получать ошибки. –

+0

Он встроен в фрагмент кода. «grow» собирается масштабировать «firstShape» до тех пор, пока размер «tempShape» не будет равен «1», это будет первоначальное значение. – bpedit

+0

Прошу прощения, я не был в этом вопросе. FirstShape будет немного больше, чем tempShape. Я пытаюсь проверить, как «если firstShape.scale == tempShape.scale» Я обновлю вопрос –