[SceneKit专题]5-3D空间的触摸事件

说明

本系列文章是对<3D Apple Games by Tutorials>一书的学习记录和体会

此书对应的代码地址

SceneKit系列文章目录

在平时开发中常用的touchesBegan方法在3D中仍然可用. 只不过在3D空间内采用了射线检测方法来返回触摸到的物体.

当有触摸事件发生时:

  1. 拿到用户触摸在屏幕上的位置.
  2. 转换到SCNView的坐标系中.
  3. 当触摸点在SCNView上时,发射一个射线,返回与该射线相交的一系列物体.
override func touchesBegan(touches: Set<UITouch>, withEvent event:
UIEvent?) {
// 1 拿到触摸对象
  let touch = touches.first!
  // 2 转换坐标系
  let location = touch.locationInView(scnView)
  // 3 执行hitTest,发射射线,返回相交的物体
  let hitResults = scnView.hitTest(location, options: nil)
  // 4 
  if hitResults.count > 0 {
// 5 取出最近的物体
    let result = hitResults.first!
    // 6 处理该节点
    handleTouchFor(result.node)
}
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值