Swift, добавьте Node в SCNNode и поместите в угол - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь разместить узел (изображение) внутри узла SCNNode.Я хочу, чтобы это было в правом верхнем углу.Но как мне этого добиться?

Итак: я хочу разместить buttonNode внутри urlNode:

 let urlNode =  createWebView(url: url)
 urlNode.scale = SCNVector3(x: 0.3, y: 0.3, z: 0.3)
 let image = UIImage(named: "arrows-expand")
 let buttonNode = SCNNode(geometry: SCNPlane(width: 1, height: 1))
 buttonNode.geometry?.firstMaterial?.diffuse.contents = image
 urlNode.addChildNode(buttonNode)
 currentNode?.addChildNode(urlNode)

createWebView:

 private func createWebView(url: String) -> SCNNode  {
    print(url)

    let webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 640, height: 480))
    let request = URLRequest(url: URL(string: url)!)
    webView.loadRequest(request)

    let tvPlane = SCNPlane(width: 4.0, height: 2.75)
    tvPlane.firstMaterial?.diffuse.contents = webView
    tvPlane.firstMaterial?.isDoubleSided = true

    let tvPlaneNode = SCNNode(geometry: tvPlane)

    var translation = matrix_identity_float4x4
    translation.columns.3.z = -1.0

    tvPlaneNode.eulerAngles = SCNVector3(0,0,0)
    return tvPlaneNode
}

1 Ответ

0 голосов
/ 04 октября 2018

Ваш urlNode - это SCNPlane, его размер 4 x 2,75.Ваш buttonNode также является SCNPlane, и его размер равен 1 x 1. После создания вашего urlNode создайте свой узел кнопки и вычислите его положение: x = ширина urlNode / 2.0 - ширина imageNode / 2.0 y = высота urlNode / 2.0 + высота imageNode / 2.0

let urlNode =  createWebView(url: url) 
let buttonNode = SCNNode(geometry: SCNPlane(width: 1, height: 1))
let image = UIImage(named: "arrows-expand")
buttonNode.geometry?.firstMaterial?.diffuse.contents = image
// Clean this up to get both the urlNode and buttonPlane SCNPlane geometry with a method of your choice here
buttonNode.postion = SCNVector3(x: urlNodePlane.width / 2.0 - buttonPlane.width / 2.0, y: urlNodePlane.height / 2.0 + buttonPlane.width / 2.0)
urlNode.addChildNode(buttonNode)
urlNode.scale = SCNVector3(x: 0.3, y: 0.3, z: 0.3)
currentNode?.addChildNode(urlNode)
...