using UnityEngine;
using System.Collections;
public class MoveScaleRotateGameObject : MonoBehaviour {
public GameObject cube;
public GameObject cylinder;
float speed = 100.0f;
float x;
float y;
void Start () {
}
void Update()
{
if(Input.GetMouseButton(0))
{
x = Input.GetAxis("Mouse Y") * Time.deltaTime * speed;
y = Input.GetAxis("Mouse X") * Time.deltaTime * speed;
}else
{
x = y = 0;
}
// 旋转角度 (增加)
cube.transform.Rotate(new Vector3(x, y, 0));
}
void OnGUI()
{
if(GUILayout.Button("向左移动物体"))
{
cube.transform.Translate(new Vector3(-0.5f, 0f, 0f));
}
if (GUILayout.Button("向右移动物体"))
{
cube.transform.position = cube.transform.position + new Vector3(0.5f, 0f, 0f);
}
if(GUILayout.Button("放大物体"))
{
cube.transform.localScale *= 1.2f;
}
if(GUILayout.Button("缩小物体"))
{
cube.transform.localScale *= 0.8f;
}
// 左右旋转
if (GUILayout.Button("旋转物体"))
{
cube.transform.Rotate(new Vector3(0, 10, 0));
}
// 上下旋转
if(GUILayout.Button("上下旋转"))
{
cube.transform.Rotate(new Vector3(10, 0, 0));
}
if(GUILayout.Button("其它旋转"))
{
cube.transform.Rotate(new Vector3(0, 0, 10));
}
if (GUILayout.Button("围绕球体旋转物体"))
{
cube.transform.RotateAround(cylinder.transform.position, Vector3.up, 10);
}
}
}
- 移动游戏对象
tansform.Translate(Vector3 offset);
该函数相当于 transform.position = transform.position + offset
- 缩放游戏对象
transform.localScale = new Vector3(x,y,z);
其中Vector3的x为x轴向的缩放,y为y轴向的缩放,z为z轴向的缩放。
也可以通过下面的代码格式快速整体绽放:
transform.localScale *= 1.2f; //对象整体放大1.2倍速
- 旋转游戏对象
游戏对象的旋转方式分为两种:
- 自转(也就是围绕)
- 围绕旋转(也就是围绕一个点或者一个游戏对象来旋转)
- transform.Rotate(); 该函数用于设置游戏对象自转
- transform.RoateAround(); 该函数用于设置游戏对象围绕某一个点旋转。
- Time.deltatime:上一帧所消耗的时间,这里用作模型旋转的速度系数。
- Vector3.right:x轴正方向。
- Vector3.up y轴正方向
- Vector3.forward:z轴正方向。