日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

input.touch拖动物体

發布時間:2024/8/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 input.touch拖动物体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

using UnityEngine;
using System.Collections;

public class FollowCube : MonoBehaviour
{
//用于綁定參照物對象
public Transform target;
//縮放限制的系數
private float minVertical = 0f;
private float maxVertical = 85f;
//攝像頭的位置
private float x = 0.0f;
private float y = 0.0f;
//縮放系數
private float distance = 0.0f;
//記錄上一次用戶觸摸的位置判斷用戶是放大還是縮小的手勢
private float newdis = 0;
private float olddis = 0;
// Use this for initialization
void Start()
{//初始化數據
distance = (transform.position - target.position).magnitude;
}

// Update is called once per frame

void Update()
{ //初始化游戲信息設置
//每幀旋轉攝像機,使它保持注視目標
transform.LookAt(target);
//一秒來計算,一幀完成的時間
float dt = Time.deltaTime;
//繞世界坐標旋轉的角度
x = transform.eulerAngles.y;
y = transform.eulerAngles.x;

if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
{
//判斷是否是單點觸摸
if (Input.touchCount == 1)
{//判斷是是類型為移動觸摸
if (Input.GetTouch(0).phase == TouchPhase.Moved)
{ //根據觸摸點計算x和y的位置,然后重置位置
//target.transform.Translate(Vector3.forward * Time.deltaTime * 5);
//target.transform.LookAt(target.position);
float x1 = Input.GetAxis("Mouse X");
float y1 = Input.GetAxis("Mouse Y");
x += x1 * dt * 150;
y += -y1 * dt * 150;
SetPos(x, y);

}
}
//判斷為2點觸摸
if (Input.touchCount == 2)
{//判斷觸摸的類型是這兩個點移動觸摸
if (Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
{//根據兩個點的位置重新設置生成新的觸摸點的位置
Vector3 s1 = Input.GetTouch(0).position;
Vector3 s2 = Input.GetTouch(1).position;
newdis = Vector2.Distance(s1, s2);
//判斷新生成的位置是否大于原始的位置,函數返回真是為放大手勢,假為縮小手勢
if (newdis > olddis)
{
distance -= Time.deltaTime * 50f;
}
if (newdis < olddis)
{
distance += Time.deltaTime * 50f;
}
//備份上一次觸摸點的位置,用于對比
print("distance = " + distance);
SetPos(x, y);
olddis = newdis;

}
}

}
else
{//判斷鼠標是否為左鍵點擊。函數返回真旋轉
if (Input.GetMouseButton(0))
{

float x1 = Input.GetAxis("Mouse X");
float y1 = Input.GetAxis("Mouse Y");
x += x1 * dt * 150f;
y += -y1 * dt * 150f;
SetPos(x, y);

}

if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
distance -= Input.GetAxis("Mouse ScrollWheel");
SetPos(x, y);
}
}

}


void SetPos(float x, float y)
{
y = ClampAngle(y, minVertical, maxVertical);
var rotation = Quaternion.Euler(y, x, 0.0f);
var position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;

}


static float ClampAngle(float angle, float min, float max)
{

if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp(angle, min, max);
}

}

轉載于:https://www.cnblogs.com/ZeroMurder/p/5619233.html

總結

以上是生活随笔為你收集整理的input.touch拖动物体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。