Unity Transform的一些发现
本人作为业余的unity玩家对 [Unity Transform]的 一些发现
void update(){
transform.Rotate(TurnX * Time.deltaTime,TurnY * Time.deltaTime,TurnZ * Time.deltaTime, Space.World);
transform.Translate(MoveX * Time.deltaTime, MoveY * Time.deltaTime, MoveZ * Time.deltaTime, Space.World);
}
1
2
3
4
2
3
4
void update(){
// 通过上下键控制旋转
if (Input.GetKeyDown(KeyCode.UpArrow))
{
var x = second.localRotation.x;
x += 1;
second.Rotate(x, 0, 0);
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
var x = second.localRotation.x;
x -= 1;
second.Rotate(x, 0, 0);
}
// 通过shift+上下控制移动
if(Input.GetKey(KeyCode.LeftShift)&&Input.GetKeyDown(KeyCode.UpArrow))
{
var y = second.localPosition.y;
y -= 1;
second.position=new Vector3(0, y, 0);
}
if(Input.GetKey(KeyCode.LeftShift)&&Input.GetKeyDown(KeyCode.DownArrow))
{
var y = second.localPosition.y;
y += 1;
second.position=new Vector3(0, y, 0);
}
// 重置
if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.I))
{
second.localPosition=new Vector3(0, 0, 0);
second.localEulerAngles=new Vector3(0, 0, 0);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
已debug的方式查看 TRANSFORM的属性
如果你想直接改变TRANSFORM的属性,那么你可以通过下面的方式
transform.localPosition = new Vector3(0, 0, 0);
transform.localEulerAngles = new Vector3(0, 0, 0);
transform.localScale = new Vector3(1, 1, 1);
1
2
3
2
3
如果你修改的时候不带local,那么你可以通过下面的方式
transform.position = new Vector3(0, 0, 0);
transform.eulerAngles = new Vector3(0, 0, 0);
transform.localScale = new Vector3(1, 1, 1);
1
2
3
2
3
某些时候可以达到相同的效果,有些时候可以达到不同的效果
如果我把上面的重置代码修改一下,就可以达到不同的效果
// 重置
if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.I))
{
second.position=new Vector3(0, 0, 0);
second.eulerAngles=new Vector3(0, 0, 0);
}
1
2
3
4
5
6
2
3
4
5
6
启动前 启动后修改一些参数
没改前的重置 带local 改变后的重置 不带local
会发现带local是我的预期,但是不带local他会通过计算使物体回到初始位置并给local赋值