2017-12-20 20 views

답변

1

나는 아마 이것에 접근 할 것입니다. 농구 후프 3D 대구 모델을 얻은 후.

https://3dwarehouse.sketchup.com/model/fa42320b3def2c6b4741187cebbc52b3/Basketball-Hoop

나는 것 다른 요소 .... 뒤, 극 & 반지/후프, 바닥 & 볼에 대한 physicsShapes까지 처음 설치. 그런 다음 링 내부에 맞도록 실린더 크기를 알아 냈습니다.

사용 :

let cylinder = SCNCylinder(radius: 1.0, height: 0.1) 

이는 후프에 대한 physicBody된다.

hoopNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry:cylinder)) 

그런 다음 공이 각기 다른 농구 요소/노드와 충돌 한 것을 연습 해 보겠습니다.

이 시각적 물리적으로 충돌을 디버깅하는 데 도움이 될 것입니다 디버그 기능을

SceneView.debugOptions의 =의 .showPhysicsShapes

를 사용하는 것을 잊지 마십시오 는 &는 심령의 모양을 정확하게 조정과에 있는지 확인 모양 올바른 위치. 그것은 안타 경우

이미 여기에 이전 게시물에 대한 답이 어떻게 설정 충돌을 수행하는

...

how to setup SceneKit collision detection

당신은 아마 볼이 백보드, 극과 링을 반송하기를 원하지만 후프 물리 형태 ... 공을 사라지게하고 멋진 스파크/불꽃 애니메이션 또는 뭔가를 만들 수 있습니다. 그런 다음 점수를 등록 할 수도 있습니다.

GitHub의에이 Arkit 게임 득점 모든 것들, 충돌, 애니메이션 &을 처리하는 당신에게 좋은 템플릿을 줄 것이다

https://github.com/farice/ARShooter

0

공의 월드 위치와 바스켓 세계 위치 + 경계 상자를 사용하여 구현해야합니다.

var (basketBoundingBoxMin, basketBoundingBoxMax) = (basket?.presentation.boundingBox)! 
let size = basketBoundingBoxMax - basketBoundingBoxMin 

사용이 크기와 계산 바구니의 세계 위치 :

  • 바구니의 최소 X, Y를, Z
  • 는 바구니의

    는 경계 상자있어 사용 바구니의 크기를 계산 최대 x, y, z

그런 다음 볼의 세계 위치가 바구니 안에 있는지 확인합니다. et의 최소 및 최대 위치.