unity3d游戏开发之IOS触摸屏手势控制镜头旋转与缩放.doc
文本预览下载声明
前几篇文章介绍了很多?
? ?? ? 我们看看Move这条脚本,说明一下几个重要的 :
? ?? ? 这些方法都是系统自己调用的方法
? ?? ? function Start () : 游戏启动以后只调用一次,可用于脚本的初始化操作,
? ?? ? function Update ():Start()方法调用结束以后每一帧都会调用,可以在这里更新游戏逻辑。
? ?? ? function LateUpdate (): Start()方法调用结束以后每一帧都会调用,但是它是在 Update()调用完后调用。
? ?? ? Move.js完整代码
//用于绑定参照物对象
var target : Transform;
//缩放系数
var distance = 10.0;
//左右滑动移动速度
var xSpeed = 250.0;
var ySpeed = 120.0;
//缩放限制系数
var yMinLimit = -20;
var yMaxLimit = 80;
//摄像头的位置
var x = 0.0;
var y = 0.0;
//记录上一次手机触摸位置判断用户是在左放大还是缩小手势
private var oldPosition1 : Vector2;
private var oldPosition2 : Vector2;
//初始化游戏信息设置
function Start () {
? ? var angles = transform.eulerAngles;
? ? x = angles.y;
? ? y = angles.x;
? ?? ???// Make the rigid body not change rotation
? ?? ?? ???if (rigidbody)
? ?? ?? ?? ?? ? rigidbody.freezeRotation = true;
}
function Update ()
{
? ?? ???//判断触摸数量为单点触摸
? ?? ???if(Input.touchCount == 1)
? ?? ???{
? ?? ?? ?? ?? ? //触摸类型为移动触摸
? ?? ?? ?? ?? ? if(Input.GetTouch(0).phase==TouchPhase.Moved)
? ?? ?? ?? ?? ? {
? ?? ?? ?? ?? ?? ???//根据触摸点计算X与Y位置
? ?? ?? ?? ?? ?? ?? ?? ?x += Input.GetAxis(Mouse X) * xSpeed * 0.02;
? ?? ?? ?? ?? ? y -= Input.GetAxis(Mouse Y) * ySpeed * 0.02;
? ?? ?? ?? ?? ? }
? ?? ???}
? ?? ???//判断触摸数量为多点触摸
? ?? ???if(Input.touchCount 1 )
? ? {
? ?? ?? ?? ?//前两只手指触摸类型都为移动触摸
? ?? ?? ?? ?if(Input.GetTouch(0).phase==TouchPhase.Moved||Input.GetTouch(1).phase==TouchPhase.Moved)
? ?? ?? ?? ?{
? ?? ?? ?? ?? ?? ?? ?? ?//计算出当前两点触摸点的位置
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?var tempPosition1 = Input.GetTouch(0).position;
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???var tempPosition2 = Input.GetTouch(1).position;
? ?? ?? ?? ?? ?? ???//函数返回真为放大,返回假为缩小
? ?? ?? ?? ?? ?? ???if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2))
? ?? ?? ?? ?? ?? ???{
? ?? ?? ?? ?? ?? ?? ?? ?? ? //放大系数超过3以后不允许继续放大
? ?? ?? ?? ?? ?? ?? ?? ?? ? //这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? if(distance 3)
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? {
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?distance -= 0.
显示全部