找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 593|回复: 10

实现物体的拖动,扭转 以及缩放功效 !亲!只要将以下代码挂到你的Camera上,再指定targ ...

[复制链接]

该用户从未签到

2

主题

13

帖子

11

积分

LV.1

Rank: 1

积分
11
QQ
发表于 2016-7-3 14:28:08 | 显示全部楼层 |阅读模式
  1. using UnityEngine;
  2. using System.Collections;
  3.   
  4. public class controlmode : MonoBehaviour
  5. {
  6.   
  7.     public Transform tARget;
  8.     private int MouseWheelSensitivity = 1;
  9.     private int MouseZoomMin = 1;
  10.     private int MouseZoomMax = 5;
  11.     private float normalDistance = 3;
  12.   
  13.     private Vector3 normalized;
  14.   
  15.     private float xSpeed = 250.0f;
  16.     private float ySpeed = 120.0f;
  17.   
  18.     private int yMinLimit = -20;
  19.     private int yMaxLimit = 80;
  20.   
  21.     private float x = 0.0f;
  22.     private float y = 0.0f;
  23.   
  24.     private Vector3 screenPoint;
  25.     private Vector3 offset;
  26.   
  27.     private Quaternion rotation = Quaternion.Euler(new Vector3(30f, 0f, 0f));
  28.     private Vector3 CameraTarget;
  29.     void Start()
  30.     {
  31.   
  32.         CameraTarget = target.position;
  33.   
  34.         float z = target.transform.position.z - normalDistance;
  35.         transform.position = rotation * new Vector3(transform.position.x, transform.position.y, z);
  36.   
  37.         transform.LookAt(target);
  38.   
  39.         var angles = transform.eulerAngles;
  40.         x = angles.y;
  41.         y = angles.x;
  42.     }
  43.   
  44.     void Update()
  45.     {
  46.   
  47.         if (Input.GetMouseButton(1))
  48.         {
  49.             x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
  50.             y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
  51.   
  52.             y = ClampAngle(y, yMinLimit, yMaxLimit);
  53.   
  54.             var rotation = Quaternion.Euler(y, x, 0);
  55.             var position = rotation * new Vector3(0.0f, 0.0f, -normalDistance) + CameraTarget;
  56.   
  57.             transform.rotation = rotation;
  58.             transform.position = position;
  59.   
  60.         }
  61.         else if (Input.GetAxis("Mouse ScrollWheel") != 0)
  62.         {
  63.             normalized = (transform.position - CameraTarget).normalized;
  64.   
  65.             if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
  66.             {
  67.                 normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
  68.             }
  69.             if (normalDistance < MouseZoomMin)
  70.             {
  71.                 normalDistance = MouseZoomMin;
  72.             }
  73.             if (normalDistance > MouseZoomMax)
  74.             {
  75.                 normalDistance = MouseZoomMax;
  76.             }
  77.             transform.position = normalized * normalDistance;
  78.             //transform.position = normalized * normalDistance + CameraTarget;
  79.   
  80.         }
  81.         else if (Input.GetMouseButtonDown(2))
  82.         {
  83.             screenPoint = Camera.main.WorldToScreenPoint(target.transform.position);
  84.             offset = target.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
  85.         }
  86.   
  87.         if (Input.GetMouseButton(2))
  88.         {
  89.             Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
  90.   
  91.             Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
  92.             target.transform.position = curPosition;
  93.         }
  94.         transform.LookAt(CameraTarget);
  95.   
  96.     }
  97.   
  98.     static float ClampAngle(float angle, float min, float max)
  99.     {
  100.         if (angle < -360)
  101.             angle += 360;
  102.         if (angle > 360)
  103.             angle -= 360;
  104.         return Mathf.Clamp(angle, min, max);
  105.     }
  106. }
复制代码

该用户从未签到

0

主题

10

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2016-10-21 11:16:33 | 显示全部楼层
楼主辛苦了,帮楼主顶起来

该用户从未签到

0

主题

7

帖子

6

积分

LV.1

Rank: 1

积分
6
QQ
发表于 2016-10-24 16:19:28 | 显示全部楼层
看帖怎么能不会呢??

该用户从未签到

1

主题

28

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2016-10-25 07:59:16 | 显示全部楼层
增强现实希望发展越来越好

该用户从未签到

1

主题

44

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2016-11-17 07:53:50 | 显示全部楼层
竟然还有零回复,给我消失

该用户从未签到

0

主题

54

帖子

51

积分

LV.2

Rank: 2

积分
51
QQ
发表于 2016-11-18 04:52:10 | 显示全部楼层
楼主辛苦了。。回帖是一种美德

该用户从未签到

1

主题

24

帖子

24

积分

LV.1

Rank: 1

积分
24
QQ
发表于 2016-11-29 13:57:41 | 显示全部楼层
增强现实,增强现实,增强现实。重要的事情说三遍

该用户从未签到

0

主题

10

帖子

9

积分

LV.1

Rank: 1

积分
9
发表于 2016-12-4 22:04:14 | 显示全部楼层
楼主写的很不错,关于AR的知识受教了

该用户从未签到

0

主题

6

帖子

5

积分

LV.1

Rank: 1

积分
5
QQ
发表于 2016-12-11 09:33:13 | 显示全部楼层
嗯,很不错的样子!!

该用户从未签到

0

主题

35

帖子

34

积分

LV.1

Rank: 1

积分
34
QQ
发表于 2017-1-5 07:20:51 | 显示全部楼层
想了解下AR增强现实的相关内容来看看
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表