欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果-創(chuàng)新互聯(lián)

本文實(shí)例為大家分享了Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下

創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元鎮(zhèn)雄做網(wǎng)站,已為上家服務(wù),為鎮(zhèn)雄各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

由于項(xiàng)目運(yùn)行在安卓上,運(yùn)用到了插件,比較麻煩。你們可以在觸發(fā)條件上進(jìn)行修改,不用插件也可以。

1.下載FingerGestures 插件 下載地址 點(diǎn)擊打開(kāi)鏈接

2.導(dǎo)入插件,創(chuàng)建場(chǎng)景 將預(yù)設(shè)Finger Gestures Initializer 拖拽到 Hierarchy 視圖中

3.添加腳本,拖拽到攝像機(jī)上。創(chuàng)建一個(gè)方塊拖拽到腳本target 屬性上。

using UnityEngine;
using System.Collections;
 
public class ObjectControl : MonoBehaviour
{
 public Transform target;
 public float yawSensitivity = 80.0f;
 public float pitchSensitivity = 160.0f;
 public bool clampPitchAngle = true;
 public float pinchZoomSensitivity = 0.5f;//縮放速度
 public float smoothZoomSpeed = 10.0f;
 public float smoothOrbitSpeed = 20.0f;
 public float distance = 0;
 
 float yaw = 0;
 float pitch = 0;
 float idealYaw = 0;
 float idealPitch = 0;
 float fChangeScale = 0;
 float fChangeideal = 0;
 public Transform[] movementP;
 
 /// <summary>
 /// 控制模式枚舉
 /// </summary>
 public enum ControlModel
 {
 Zoom, Rotate, Translate
 }
 
 public ControlModel controlModel = ControlModel.Rotate;
 
 //Vector3 position=new Vector3();
 public bool bArrive = false;//鼠標(biāo)是否到達(dá)零件箱邊界區(qū)域
 //平移方式是否根據(jù)鼠標(biāo)拖動(dòng)距離還是直接置為鼠標(biāo)位置
 public bool ifDragMove = false;
 //平移方式為:根據(jù)鼠標(biāo)拖動(dòng)距離 時(shí),評(píng)議的速度
 public float moveSpeed = 1.0f;
 //是夠需要畫出按鈕(縮放、旋轉(zhuǎn)、平移)
 public bool ifDrawBtn = true;
 //縮放方式改為:改變相機(jī)范圍
 public bool zoomCamera = false;
 //zoomCamera = true ,相機(jī)的最小范圍值
 public float minZoom = 0f;
 //zoomCamera = true ,相機(jī)的大范圍值
 public float maxZoom = 179f;
 //平移對(duì)象
 public Transform moveTarget;
 //平移對(duì)象的初始位置
 Vector3 moveTargetPos;
 //模型的直接父對(duì)象
 public Transform parentModel;
 Vector3 parentModelPos;
 
 void Start()
 {
 zoomCamera = true;
 }
 
 void OnEnable()
 {
 
 FingerGestures.OnDragMove += FingerGestures_OnDragMove;
 FingerGestures.OnPinchMove += FingerGestures_OnPinchMove;
 FingerGestures.OnFingerDragEnd += OnFingerDragEnd;
 
 }
 
 void OnDisable()
 {
 FingerGestures.OnDragMove -= FingerGestures_OnDragMove;
 FingerGestures.OnPinchMove -= FingerGestures_OnPinchMove;
 FingerGestures.OnFingerDragEnd -= OnFingerDragEnd;
 }
 
 public void setRotation()
 {
 Vector3 angles = target.eulerAngles;
 yaw = idealYaw = angles.y;
 pitch = idealPitch = angles.x;
 }
 
 void FingerGestures_OnDragMove(Vector2 fingerPos, Vector2 delta)
 {
 onDrag = true;
 try
 {
  Screen.showCursor = false;
 }
 catch
 {
  Screen.showCursor = false;
 }
 if (controlModel == ControlModel.Rotate && !bArrive)
 {
  idealYaw -= delta.x * yawSensitivity * 0.02f;
  idealPitch += delta.y * pitchSensitivity * 0.02f;
  len = delta;
  if (target) target.transform.Rotate(new Vector3(delta.y, -delta.x, 0), Space.World);
 }
 if (controlModel == ControlModel.Translate && !bArrive)
 {
  if (ifDragMove)
  {
  if (moveTarget == null)
  {
   target.position = new Vector3(target.position.x + delta.x * moveSpeed, target.position.y + delta.y * moveSpeed, target.localPosition.z);// GetWorldPos( fingerPos );
  }
  else
  {
   moveTarget.position = new Vector3(moveTarget.position.x + delta.x * moveSpeed, moveTarget.position.y + delta.y * moveSpeed, moveTarget.localPosition.z);
  }
  }
  else
  {
  if (moveTarget == null)
  {
   target.position = GetWorldPos(fingerPos);
  }
  else
  {
   moveTarget.position = GetWorldPos(fingerPos);
  }
  }
 }
 
 }
 
 void FingerGestures_OnPinchMove(Vector2 fingerPos1, Vector2 fingerPos2, float delta)
 {
 
 if (controlModel == ControlModel.Zoom && !bArrive)
 {
  if (zoomCamera)
  {
  float fZoom = camera.fieldOfView - delta * pinchZoomSensitivity * 800 * Time.deltaTime;
  fZoom = Mathf.Min(fZoom, maxZoom);
  fZoom = Mathf.Max(fZoom, minZoom);
  camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, fZoom, Time.deltaTime * smoothZoomSpeed);
  // camera.transform.position = target.position - fZoom * camera.transform.forward;
  }
  else
  {
 
  fChangeScale = target.localScale.x + delta * pinchZoomSensitivity;
 
  Vector3 vc = new Vector3(fChangeScale, fChangeScale, fChangeScale);
  }
 }
 }
 //滑動(dòng)結(jié)束
 void OnFingerDragEnd(int fingerIndex, Vector2 fingerPos)
 {
 Screen.showCursor = true;
 
 onDrag = false;
 }
 
 
 //把Unity屏幕坐標(biāo)換算成3D坐標(biāo)
 Vector3 GetWorldPos(Vector2 screenPos)
 {
 // Camera mainCamera = Camera.main;
 Camera mainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
 if (!mainCamera.enabled)
 {
  mainCamera = mainCamera.transform.parent.FindChild("CameraOne").GetComponent<Camera>();
 }
 return mainCamera.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, Mathf.Abs(target.position.z - mainCamera.transform.position.z)));
 }
 
 void Apply()
 {
 if (controlModel == ControlModel.Rotate && !bArrive)
 {
  yaw = Mathf.Lerp(yaw, idealYaw, Time.deltaTime * smoothOrbitSpeed);
  pitch = Mathf.Lerp(pitch, idealPitch, Time.deltaTime * smoothOrbitSpeed);
 }
 }
 bool onDrag;
 Vector2 len;
 
 void LateUpdate()
 {
 if (Input.GetMouseButtonUp(1) || Input.GetMouseButtonUp(0))
 {
  Screen.showCursor = true;
 }
 Apply();
 }
 
 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);
 }
 
 void Update()
 {
 ///自由切換
 
 if (Input.GetMouseButtonDown(0))
 {
 
  controlModel = ControlModel.Translate;
 }
 
 if (Input.GetMouseButtonDown(1))
 {
 
  controlModel = ControlModel.Rotate;
 }
 
 if (Input.GetAxis("Mouse ScrollWheel") != 0)
 {
  controlModel = ControlModel.Zoom;
 }
 
 }
 
 /// <summary>
 /// 復(fù)位
 /// </summary>
 public void ResetValue()
 {
 if (moveTarget != null)
 {
  moveTarget.localPosition = moveTargetPos;
 }
 if (parentModel != null)
 {
  parentModel.localPosition = parentModelPos;
 }
 yaw = 0;
 pitch = 0;
 idealYaw = 0;
 idealPitch = 0;
 }
 
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://aaarwkj.com/article46/hcchg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、域名注冊(cè)網(wǎng)站導(dǎo)航、ChatGPT網(wǎng)站營(yíng)銷、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
九九九热免费在线观看| 久久国产精品必看狼人| 国产婷婷精品一区二区| 麻豆国产97在线精品一区| 免费久久人人爽人人爽| 日本黄色录像黄色录像| 色偷偷亚洲精品一区二区| av中文字幕亚洲一区二区| 国产三级黄在线观看| 国产日韩欧美另类专区| 久久亚洲中文字幕丝袜长腿| 亚洲男人天堂在线观看| 一区二区精品福利视频| 色人阁在线精品免费视频| 少妇精品偷拍高潮少妇在线观看| 中文字幕日韩欧美一区| 午夜视频免费在线观看| 欧美日韩免费高清视视频| 九九视频在线观看免费观看| 手机不卡在线观看av| 福利在线午夜绝顶三级| 日韩无砖区2021不卡| 免费人成黄页网站在线播放国产| 日本人妻成人免费大片| 国产精品夜色一区二区三区不卡 | 国产网红女主播视频一区二区| 91精品人妻互换一区二区| 青青草成人一区二区三区| 国产三级av高清一区二区| 亚洲精品一区二区午夜| 亚洲综合五月天色婷婷| 国产亚洲一区二区视频| 禁止18观看视频软件| 日本一区二区三区高清在线| 精彩国产av一区二区三区| 黄色国产欧美国产亚洲| 日韩成人免费观看视频| 日韩精品一区伦理视频| 女子张开腿让男人捅爽| 国产黄色一区二区三区,| 蜜桃午夜精品一区二区三区|