首先感谢雨松MOMO,我是看他写的Unity3D 游戏开发书籍开始学习我的Unity3D游戏开发的。
下面是这位大牛的网址
整款Unity3D开发工具其实也就几个模块而已,只要你有心去学习,很快就可以上手。我就不想去介绍了
在Project视图中创建Js代码,
function Update(){
transform.Translate(Vector3.forward*Time.deltaTime);
}
这里的Update()方法是系统自动调用的方法,可以理解为Unity3D脚本编程的一个生命周期函数,重写这个函数。类似于Android的生命周期函数。
Vector3.forward表示向前移,Time.deltaTime表示Update方法上一帧持续的时间。由于Update方法是在游戏每一帧中都会调用,
所以Vector3.forward*Time.deltaTime表示一帧移动的距离。当然可以在后面乘以倍数,提高速度
function Update(){
transform.Rotate(Vector3.up*Time.deltaTime);
}
Vector3.up表示自身旋转,我的理解为这个物体相对于摄像机拍摄到的自己的顶
使用脚本控制模型的移动
#pragma strict
//模型移动速度
var TranslateSpeed = 20;
//模型旋转速度
var RotateSpeed = 1000;
//绘制UI
function OnGUI(){
//设置GUI背景颜色
GUI.backgroundColor = Color.red;
if(GUI.Button(Rect(10,10,70,30),"向左旋转")){
//想左旋转模型
transform.Rotate(Vector3.up *Time.deltaTime * (-RotateSpeed));
}
if(GUI.Button(Rect(90,10,70,30),"向前移动")){
//向前移动
transform.Translate(Vector3.forward * Time.deltaTime * TranslateSpeed);
}
if(GUI.Button(Rect(170,10,70,30),"向右旋转")){
//向右旋转
transform.Rotate(Vector3.up * Time.deltaTime *RotateSpeed);
}
if(GUI.Button(Rect(90,50,70,30),"向后移动")){
//向后移动
transform.Translate(Vector3.forward * Time.deltaTime *(-TranslateSpeed));
}
if(GUI.Button(Rect(10,50,70,30),"向左移动")){
//向左移动
transform.Translate(Vector3.right * Time.deltaTime *(-TranslateSpeed));
}
if(GUI.Button(Rect(170,50,70,30),"向右移动")){
//向右移动
transform.Translate(Vector3.right * Time.deltaTime * TranslateSpeed);
}
//显示模型位置信息
GUI.Label(Rect(250,10,200,30),"模型的位置" + transform.position);
//显示模型旋转信息
GUI.Label(Rect(250,50,200,30),"模型的旋转" +transform.rotation);
}
在这里使用了很多函数,都可以见名知意,
GUI.Button(画区域)是生成了一个按钮,然后点击都会返回true,默认返回false,可以这样理解
通过实验表明,
Vector3.up 表示相对于自己的Y轴(绿色轴) 向右旋转时,Roate()方法参数为正,向左旋转为负
vector3.right 表示相对于自己的X轴(红色轴) 向右移动是,Translate()方法里面的参数为正,左移为负
Vector3.forward 表示相对于自己的Z轴(蓝色轴) 想前移动为正,向后为负数
这个可以看物体上显示的坐标轴
GUI界面开发,GUI高级控件的开发了解。
在js中声明的public或者未添加任何关键字表示这个变量为共有变量,只有共有变量才可以出现在编辑器中,并且编辑可以可以修改
GUI.Label标签,可以添加文字,也可以添加贴图Texture信息
GUI.Button\GUI.RepeatButton点击不放按钮可以监控到变量。
GUI.TextField 和 GUI.PasswordField 前一个输入文本框,后一个输入密码框,并且都返回输入的字符串
PS:注意声明的变量需要初始化,如果不初始化会报错,可以在console控制台中看到红色的错误信息
最后,感觉Unity3D上手还不错,感觉还行!