码迷,mamicode.com
首页 > 其他好文 > 详细

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

时间:2014-07-03 13:33:47      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:unity   3d游戏开发   对象位置   对象缩放   对象旋转   

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除。在unity中,Transform面板一共有3个属性:

Position  (位置)

Rotation(旋转)

Scale(缩放)

这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数。


Position  (位置)

任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标。一旦Vector33容器中的坐标发生变化,那么Scene视图中游戏对象位置也将发生变化。

这次总结学习的例子,使用GUI界面添加3个拖动条来分别控制X轴,Y轴,Z轴的坐标。

//立方体X轴位置
private var Value_X : float = 0.0f;
//立方体Y轴位置
private var Value_Y : float = 0.0f;
//立方体Z轴位置
private var Value_Z : float = 0.0f;
//立方体对象
private var obj : GameObject;


function Start()
{
	//得到立方体对象
	obj  = GameObject.Find("Cube");

}


function OnGUI()
{

	GUILayout.Box("移动立方体x轴");
	Value_X = GUILayout.HorizontalSlider(Value_X, -10.0f, 10.0f,GUILayout.Width(200));
	GUILayout.Box("移动立方体y轴");
	Value_Y = GUILayout.HorizontalSlider(Value_Y, -10.0f, 10.0f,GUILayout.Width(200));	
	GUILayout.Box("移动立方体z轴");
	Value_Z = GUILayout.HorizontalSlider(Value_Z, -10.0f, 10.0f,GUILayout.Width(200));
	
	//设置立方体的位置
	obj.transform.position = Vector3(Value_X,Value_Y,Value_Z);
	GUILayout.Label("立方体当前位置:" + obj.transform.position);
		
}
 

运行:

bubuko.com,布布扣


拖动各轴拖动条后:

bubuko.com,布布扣


在上述代码中,使用obj.transform.position = Vector3(Value_X,Value_Y,Value_Z)来引用得到obj游戏对象在三维坐标中的为重,存储在Vector3容器中。



Rotation(旋转)

游戏对象的旋转方式可分为两种:

自身旋转,沿着自身的X轴,Y轴,Z轴的坐标旋转。

围绕旋转,围绕着某一点坐标或者某一对象整体旋转。


//立方体对象
private var objCube : GameObject;
//圆柱体对象
private var objCylinder : GameObject;
//旋转速度
private var speed : int = 500;


function Start()
{
	//获得对象
	objCube = GameObject.Find("Cube");
	objCylinder = GameObject.Find("Cylinder");
}

function OnGUI()
{

		if(GUILayout.Button("立方体沿x轴旋转",GUILayout.Height(50)))
		{
			objCube.transform.Rotate(Vector3.right * Time.deltaTime * speed);
    	}
    
    	if(GUILayout.Button("立方体沿y轴旋转",GUILayout.Height(50)))
    	{
			objCube.transform.Rotate(Vector3.up * Time.deltaTime * speed);
    	}
    
    	if(GUILayout.Button("立方体沿z轴旋转",GUILayout.Height(50)))
    	{
			objCube.transform.Rotate(Vector3.forward * Time.deltaTime * speed);
    	}

    	if(GUILayout.Button("立方体围绕圆柱体旋转",GUILayout.Height(50)))
    	{
			objCube.transform.RotateAround(objCylinder.transform.position,Vector3.up ,Time.deltaTime * speed);
    	}
    	
		GUILayout.Label("立方体旋转角度"+objCube.transform.rotation);


}


运行:

bubuko.com,布布扣

点击按钮后:

bubuko.com,布布扣


自身的旋转调用transform.Rotate(  )方法。围绕这某一对象选择调用transform.RotateAround(  )方法

bubuko.com,布布扣bubuko.com,布布扣



平移游戏对象

一般实现游戏对象的平移用transform.Translate(  )方法来实现。

bubuko.com,布布扣

//立方体对象
var obj : GameObject;
//平移速度
var speed : int = 1;

function Start()
{
	//获得立方体对象
	obj = GameObject.Find("Cube");
}

function Update () 
{

}

function OnGUI()
{
	if(GUILayout.Button("向前移动",GUILayout.Height(50)))
	{
	
		obj.transform.Translate(Vector3.forward * Time.deltaTime * speed);
	}
	
	if(GUILayout.Button("向后移动",GUILayout.Height(50)))
	{
	
		obj.transform.Translate(-Vector3.fwd * Time.deltaTime * speed);
	}
	
	if(GUILayout.Button("向左移动",GUILayout.Height(50)))
	{
	
			obj.transform.Translate(Vector3.left * Time.deltaTime * speed);
	}
	
	if(GUILayout.Button("向右移动",GUILayout.Height(50)))
	{
		
		obj.transform.Translate(Vector3.right * Time.deltaTime * speed);
	}
	
	GUILayout.Label("立方体的位置:"+obj.transform.position);
}

运行:

bubuko.com,布布扣

平移后:

bubuko.com,布布扣



Scale(缩放)

在unity中,缩放主要有三种方式:

沿X轴缩放

沿Y轴缩放

沿Z轴缩放

每个轴都有自身的缩放系数,系统默认的缩放系数是1,就是原有大小,因此实现游戏对象的缩放实际上就是动态修改游戏对象的缩放系数。

仿照改变游戏对象位置的代码:

//立方体对象
private var obj : GameObject;
//初始化缩放比例
private var ScaleX : float = 1.0;

private var ScaleY : float = 1.0;

private var ScaleZ : float = 1.0;

function Start()
{
	//得到立方体对象
	obj  = GameObject.Find("Cube");

}


function OnGUI()
{

	GUILayout.Box("x轴缩放");
	ScaleX = GUILayout.HorizontalSlider(ScaleX, 1.0, 2.0,GUILayout.Width(100));

	GUILayout.Box("y轴缩放");
	ScaleY = GUILayout.HorizontalSlider(ScaleY, 1.0, 2.0,GUILayout.Width(100));

	GUILayout.Box("z轴缩放");
	ScaleZ = GUILayout.HorizontalSlider(ScaleZ, 1.0, 2.0,GUILayout.Width(100));
	
	//重新计算缩放比例
	obj.transform.localScale = Vector3(ScaleX,ScaleY,ScaleZ);
		
}

运行:

bubuko.com,布布扣

缩放后:

bubuko.com,布布扣

【Unity 3D】学习笔记二十六:unity游戏脚本(六),布布扣,bubuko.com

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

标签:unity   3d游戏开发   对象位置   对象缩放   对象旋转   

原文地址:http://blog.csdn.net/u013289188/article/details/36422197

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!