Appearance
Unity Transform的一些发现
本人作为业余的unity玩家对 [Unity Transform]的 一些发现
csharp
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);
}
csharp
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);
}
}
已debug的方式查看 TRANSFORM的属性
如果你想直接改变TRANSFORM的属性,那么你可以通过下面的方式
csharp
transform.localPosition = new Vector3(0, 0, 0);
transform.localEulerAngles = new Vector3(0, 0, 0);
transform.localScale = new Vector3(1, 1, 1);
如果你修改的时候不带local,那么你可以通过下面的方式
csharp
transform.position = new Vector3(0, 0, 0);
transform.eulerAngles = new Vector3(0, 0, 0);
transform.localScale = new Vector3(1, 1, 1);
某些时候可以达到相同的效果,有些时候可以达到不同的效果
如果我把上面的重置代码修改一下,就可以达到不同的效果
csharp
// 重置
if (Input.GetKey(KeyCode.LeftShift) && Input.GetKeyDown(KeyCode.I))
{
second.position=new Vector3(0, 0, 0);
second.eulerAngles=new Vector3(0, 0, 0);
}
启动前 启动后修改一些参数
没改前的重置 带local 改变后的重置 不带local
会发现带local是我的预期,但是不带local他会通过计算使物体回到初始位置并给local赋值