unity3D实现多点触碰
Posted 千喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3D实现多点触碰相关的知识,希望对你有一定的参考价值。
实现多点触碰是利用input这个类里面的方法实现的。
从edit-project settings-input就可以看到input能够得到的轴。
想要读取轴向可以使用Input.GetAxis方法获取下列默认轴: “Horizontal” 和“Vertical” 映射于控制杆、A、W、S、D和箭头键(方向键)。 “Mouse X” 和“Mouse Y” 映射于鼠标,“Fire1”, “Fire2” “Fire3”映射于键盘的Ctrl、Alt、Cmd键和鼠标中键或控制器的按钮
ios和android设备能够支持多点触控。你可以通过Input.touches属性集合访问在最近一帧中触摸在屏幕上的每一根手指的状态数据。
当设备移动时,它们的加速感应器硬件将报告它们在三维空间中沿着三个主轴的线性加速变化数据。你可以使用这些数据检测设备当前的移动方向(相对于地面)和突然间的方向改 变。
硬件沿着某感应一轴加速就会立即返回重力值。如果值为1.0代表沿着给定轴的方向+1g的重力加速度,如果值为-1.0代表-1g的重力加速度。如果你保持设备垂直(主页键在下方)在你正前方,那么X轴就是指向你右侧的方向,Y轴指向正上方,Z轴就是你所面向的方向。
你可以读取Input.acceleration属性获得设备的加速度信息。你也可以使用Input.deviceOrientation属性获取设备在三维空间中的方位偏移。检测方位变化在你想要制作游戏行为中会非常有用,当用户转动设备或拿着设备时它是不同的。
速度感应装置在每一帧中能够轮询多次,想访问上一帧的所有速度样本你可以读取Input.accelerationEvents属性集合。这在重组玩家动作中会非常有用
1 using UnityEngine;using System.Collections; 2 public class ExampleClass : MonoBehaviour { 3 public GameObject particle; 4 void Update() { 5 for (var i = 0; i < Input.touchCount; ++i) { 6 if (Input.GetTouch(i).phase == TouchPhase.Began) { // Construct a ray from the current touch coordinates 7 Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position); 8 // Create a particle if hit 9 if (Physics.Raycast(ray)) 10 Instantiate(particle, transform.position, transform.rotation) as GameObject; 11 } 12 } 13 } 14 }
以上是关于unity3D实现多点触碰的主要内容,如果未能解决你的问题,请参考以下文章