u3d响应点击事件

2024-05-04 05:18
文章标签 事件 响应 点击 u3d

本文主要是介绍u3d响应点击事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.cnblogs.com/kenzi/p/3739517.html

25.Unity3D手机中Input类touch详解-Unity触屏事件解析到底(Twisted Fate)

首先贴一下Unity支持的模型文件类型,以前没有收集过。

Unity支持两种类型的3D文件格式:

1.  通用的“出口型”3D文件

.fbx.dae.3ds.dxf.obj等文件格式。

2.  3D软件专用的3D文件格式

Max, Maya, Blender,Cinema4D, Modo, Lightwave & Cheetah3D 等软件所支持的格式,.MAX, .MB, .MA等等。

 

 

Unity3D手机中Input类touch详解:

1.Input.touchCount 触摸随之增长,一秒50次增量。

2.Input.GetTouch(0).phase==TouchPhase.Moved 手指滑动中最后一帧滑动的状态是运动的。

3.TouchPhase  触摸的几个状态。

4.Touch.deltaPosition 增量位置(Input.GetTouch(0).deltaPosition)最后一帧滑动的值,只返回xy轴坐标,也可用vector3(z轴为0),所以一般用vector2接收。

复制代码
 1 static var aa:int;
 2 function Update () {
 3 if(Input.touchCount>0)
 4 {
 5 print(Input.touchCount);
 6 }
 7 }
 8 function OnGUI()
 9 {
10 GUI.Label(Rect(34,34,34,34),"sdff");
11 }
复制代码

touchCount指的是触摸帧的数量。要注意的是:touch事件 只能在模拟器或者真机上运行(已测试通过),大约一秒钟touch不放。touchCount+50次左右。2.Input.touches 触摸列表。

复制代码
// Prints number of fingers touching the screen
//输出触摸在屏幕上的手指数量
function Update () {
var fingerCount = 0;
for (var touch : Touch in Input.touches) {
if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
fingerCount++;
}
if (fingerCount > 0)
print ("User has " + fingerCount + " finger(s) touching the screen");
}
复制代码

3.让cube随着touch 移动代码:

复制代码
static var count:int; //定义touchCount数
var particle_:GameObject;//定义存放cube对象
var touchposition:Vector3; //存储移动三维坐标值
function Update () {
if(Input.touchCount>0)
{
count+=Input.touchCount;}
if((Input.touchCount>0&&Input.GetTouch(0).phase==TouchPhase.Moved)) //[color=Red]如果点击手指touch了  并且手指touch的状态为移动的[/color]
{
touchposition=Input.GetTouch(0).deltaPosition;  //[color=Red]获取手指touch最后一帧移动的xy轴距离[/color]
particle_.transform.Translate(touchposition.x*0.01,touchposition.y*0.01,0);//[color=Red]移动这个距离[/color]
}}
function OnGUI()
{
GUI.Label(Rect(10,10,100,30),"cishu:"+count.ToString());
GUI.Label(Rect(10,50,100,30),touchposition.ToString());
}
复制代码

 

 移动物体:

复制代码
using UnityEngine;
using System.Collections;public class example : MonoBehaviour {public float speed = 0.1F;void Update() {if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;transform.Translate(-touchDeltaPosition.x * speed, -touchDeltaPosition.y * speed, 0);}}
}
复制代码

点击碰撞克隆:

复制代码
using UnityEngine;
using System.Collections;public class example : MonoBehaviour {public GameObject projectile;void Update() {int i = 0;while (i < Input.touchCount) {if (Input.GetTouch(i).phase == TouchPhase.Began)clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;++i;}}
}
复制代码

点击屏幕,射线法发射一个粒子

复制代码
using UnityEngine;
using System.Collections;public class example : MonoBehaviour {public GameObject particle;void Update() {int i = 0;while (i < Input.touchCount) {if (Input.GetTouch(i).phase == TouchPhase.Began) {Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);if (Physics.Raycast(ray))Instantiate(particle, transform.position, transform.rotation) as GameObject;}++i;}}
}





using UnityEngine;
using System.Collections;public class TestTouch : MonoBehaviour {static int clickTimes=0;// Use this for initializationvoid Start () {Debug.Log ( " you touch me please .... ");}// Update is called once per framevoid Update () {if (Input.touchCount > 0) {clickTimes++;//Debug.Log ( " \n \n you touch me please .... the time is  " + clickTimes);if (Input.GetTouch (0).phase ==TouchPhase.Began){Debug.Log (" !!!!! touch begin  ----------  ");}if (Input.GetTouch (0).phase == TouchPhase.Stationary ) {return;//Debug.Log (" !!!!! touch remove  ----------  ");}if (Input.GetTouch (0).phase == TouchPhase.Moved) {//	Debug.Log (" !!!!! touch remove  ----------  ");}if (Input.GetTouch (0).phase == TouchPhase.Ended) {Debug.Log (" !!!!! touch end  ----------  ");}if (Input.GetTouch (0).phase == TouchPhase.Canceled) {Debug.Log (" !!!!! touch canceled  ----------  ");}print (Input.touchCount);Vector2 v2 = new Vector2 (Input.GetTouch (0).position.x, Input.GetTouch(0).position.y);//Debug.Log (" You touch me  x:= " + v2.x + " y:= " + v2.y );}}
}




这篇关于u3d响应点击事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958408

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

FreeRTOS内部机制学习03(事件组内部机制)

文章目录 事件组使用的场景事件组的核心以及Set事件API做的事情事件组的特殊之处事件组为什么不关闭中断xEventGroupSetBitsFromISR内部是怎么做的? 事件组使用的场景 学校组织秋游,组长在等待: 张三:我到了 李四:我到了 王五:我到了 组长说:好,大家都到齐了,出发! 秋游回来第二天就要提交一篇心得报告,组长在焦急等待:张三、李四、王五谁先写好就交谁的

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

BT天堂网站挂马事件后续:“大灰狼”远控木马分析及幕后真凶调查

9月初安全团队披露bt天堂网站挂马事件,该网站被利用IE神洞CVE-2014-6332挂马,如果用户没有打补丁或开启安全软件防护,电脑会自动下载执行大灰狼远控木马程序。 鉴于bt天堂电影下载网站访问量巨大,此次挂马事件受害者甚众,安全团队专门针对该木马进行严密监控,并对其幕后真凶进行了深入调查。 一、“大灰狼”的伪装 以下是10月30日一天内大灰狼远控的木马样本截图,可以看到该木马变种数量不

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli