>

두 개의 물체가 있는데 둘 다 접촉 할 때 어떤 일이 일어나길 원합니다. 한 개체는 SCNSphere이고 다른 개체는 SCNCylinder입니다. 유일한 문제는 내가 공을 실린더에 던질 때 간격이 있어도 만지는 것 같습니다. 내가 그것을 아주 멀리 던지면 예상대로 작동합니다. 연락처를 정확하게 만들고 간격을 두는 방법은 무엇입니까? PhysicsShape가 객체의 모양과 일치하지 않는 것 같습니다. 나는 그것이 정확하기를 원합니다. 도움이 필요하십니까?

실린더 코드 :

let scorer = SCNCylinder(radius: 0.02, height: 0.01)
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "basketballSkin.png")
scorer.materials = [material]
let scorerNode = SCNNode(geometry: scorer)
scorerNode.worldPosition = SCNVector3(x: 0, y: -1.35, z: -1.4)
let physicsShapesc = SCNPhysicsShape(node: scorerNode, options:[SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.concavePolyhedron])
let physicsBodysc = SCNPhysicsBody(type: .static, shape: physicsShapesc)
scorerNode.physicsBody = physicsBodysc

scorerNode.physicsBody?.categoryBitMask = BodyType.scorer.rawValue scorerNode.physicsBody?.collisionBitMask = BodyType.scorer.rawValue | BodyType.ball.rawValue scorerNode.physicsBody?.contactTestBitMask = BodyType.scorer.rawValue | BodyType.ball.rawValue

볼 코드 :

let ball = SCNSphere(radius:0.04)
   // Bucketnode.scale = SCNVector3Make(0.2,0.2,0.2);
    let material = SCNMaterial()
    material.diffuse.contents = UIImage(named: "basketballSkin.png")
    ball.materials = [material]
    let ballNode = SCNNode(geometry: ball)
    ballNode.position = cameraPosition
    let physicsShape = SCNPhysicsShape(node: ballNode, options:nil)
    let physicsBody = SCNPhysicsBody(type: .dynamic, shape: physicsShape)
    ballNode.physicsBody = physicsBody

    let forceVector:Float = 2.7
    ballNode.physicsBody?.applyForce(SCNVector3Make(cameraPosition.x * forceVector, cameraPosition.y * forceVector, cameraPosition.z*forceVector), asImpulse: true)
    ballNode.physicsBody?.categoryBitMask = BodyType.ball.rawValue
    //ballNode.physicsBody?.collisionBitMask = BodyType.ball.rawValue | BodyType.scorer.rawValue
    ballNode.physicsBody?.contactTestBitMask = BodyType.ball.rawValue | BodyType.scorer.rawValue
    sceneView.scene.rootNode.addChildNode(ballNode)
  DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { // change 2 to desired number of seconds
 ballNode.removeFromParentNode()

   }

  • 답변 # 1

    SCNPhysicsShape.ShapeType 구조에 대한 정의를 고려하면 형상 "형상을 기반으로 물리 모양을 만들 때 SceneKit이 사용하는 세부 수준을 지정하는 유형 키 값"을 고려합니다. 옵션 세트가 예상대로 작동하지 않을 수 있습니다 :

    let physicsShapesc = SCNPhysicsShape(node: scorerNode, options:[SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.concavePolyhedron])
    
    

    그 외에도 공이 양동이쪽으로 얼마나 빨리 움직이는가? "concavePolyhedron"은 렌더링에 가장 까다로운 유형 인 것 같습니다

  • 이전 NA 삭제시 R 문제 | NA가 감지되지 않아 isna에서 찾을 수 없습니다
  • 다음 잡히지 않은 php 예외 mongodb \ driver \ exception \ authenticationexception - "인증 실패"