您的位置:首页 > 编程语言

物品展示必备代码(旋转与缩放代码)

2014-05-23 21:21 519 查看


csharpcode:

[code]01
using
UnityEngine;
02
using
System.Collections;
03
//
直接放在相机上,控制相机的旋转和缩放 //
04
public
class
CameraContro
: MonoBehaviour {
05
 
06
public
Transform
target;
07
public
float
xSpeed=200,
ySpeed=200, mSpeed=10;
08
public
float
yMinLimit=-50,
yMaxLimit=50;
09
public
float
distance=7,
minDistance=2, maxDistance=30;
10
 
11
//bool
needDamping = false;
12
public
bool
needDamping
=
true
;
13
float
damping
= 5.0f;
14
 
15
public
float
x
= 0.0f;
16
public
float
y
= 0.0f;
17
 
18
 
19
public
void
SetTarget(
GameObject go )
20
 
21
 
22
{
23
target
= go.transform;
24
}
25
//
Use this for initialization
26
void
Start
() {
27
Vector3
angles = transform.eulerAngles;
28
x
= angles.y;
29
y
= angles.x;
30
}
31
 
32
//
Update is called once per frame
33
void
LateUpdate
()
34
{
35
 
36
 
37
if
(target)
38
{
39
//use
the light button of mouse to rotate the camera
40
if
(
Input.GetMouseButton(0) )
41
{
42
x
+= Input.GetAxis(
"Mouse
X"
)
* xSpeed * 0.02f;
43
y
-= Input.GetAxis(
"Mouse
Y"
)
* ySpeed * 0.02f;
44
 
45
y
= ClampAngle(y, yMinLimit, yMaxLimit);
46
 
47
//print(Input.GetAxis("Mouse
X"));
48
//print(
Input.GetAxis("Mouse Y"));
49
//print(x);
50
//print(y);
51
 
52
//<a
href="http://www.unitymanual.com" target="_blank" class="relatedlink">unity3d</a>教程手册:www.unitymanual.com
53
}
54
 
55
 
56
distance
-= Input.GetAxis(
"Mouse
ScrollWheel"
)*mSpeed;
57
distance
= Mathf.Clamp(distance, minDistance, maxDistance);
58
 
59
 
60
Quaternion
rotation = Quaternion.Euler(y, x, 0.0f);
61
Vector3
disVector =
new
Vector3(
0.0f, 0.0f, -distance );
62
Vector3
position = rotation * disVector +target.position;
63
//adjust
the camera
64
if
(
needDamping )
65
{
66
transform.rotation
= Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime*damping);
67
transform.position
= Vector3.Lerp(transform.position, position, Time.deltaTime*damping);
68
}
69
else
70
{
71
transform.rotation
= rotation;
72
transform.position
= position;
73
}
74
//Unity3D教程手册:www.unitymanual.com
75
 
76
}
77
}
78
 
79
static
float
ClampAngle
(
float
angle,
float
min,
float
max)
80
{
81
if
(angle
<-360)
82
angle
+= 360;
83
if
(angle
>360)
84
angle
-= 360;
85
return
Mathf.Clamp
(angle,min,max);
86
}
87
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: