Unity 3D之使用GameObject创建简单的可移动的对象

在Unity 3D上开发游戏,需要游戏脚本与3D建模相结合,将写好的脚本拖曳到3D对象里从而实现效果。

下面是一个小实例,使用Unity 3D实现一个可控制移动的小人,小人可以向前、向后、向左和向右移动。

1、通过 File - > New Scene 创建一个场景;

2、点击Create -> Create Empty 创建一个GameObject,它即是游戏对象;

3、在Inspector 面板里将此对象的名字改为 “hero” (记得按回车键),等一下再脚本中将通过此名字来与查找此对象,如下图:

4、点击Add Component ,选择Mesh -> Mesh Renderer ,如下图所示:

5、再次点击 Add Component,添加Mesh -> Mesh Filter

6、点击Mesh Filter 里的小按钮,在弹出的页面里选择Quad

7、在Project中创建文件夹Resources,并在其中创建四个文件夹:forward,back,right,left,这四个文件夹用于放置图片文件;

创建文件:2d.js,并使用编辑器打开,代码如下:

<strong><span style="font-size:18px;color:#ff0000;">#pragma strict

private var hero : GameObject;

//贴图数组
private var forward : Object[];
private var left : Object[];
private var right : Object[];
private var back : Object[];

//人物行走图计数器
private var counter : int;

//每秒的帧数
private var fps : float = 2;
//限制帧的时间
private var time : float = 0;
//判断按钮是否被按下的布尔值
private var keyForward : boolean;
private var keyBack : boolean;
private var keyLeft : boolean;
private var keyRight : boolean;

//当前贴图数组
private var anim : Object[];
//当前方向
private var pointer : int = 1;
//方向向量的值,即速度的大小
private var f : float = 0.001f;

function Start() {

	hero = GameObject.Find("hero");
	forward = Resources.LoadAll("woman/forward");
	left    = Resources.LoadAll("woman/left");
	right   = Resources.LoadAll("woman/right");
	back    = Resources.LoadAll("woman/back");
	anim = forward;
	counter = 0;
}

function OnGUI(){
	GUILayout.BeginHorizontal(); //四个按钮水平排列
	keyForward  = GUILayout.RepeatButton("向前");
	keyLeft 	= GUILayout.RepeatButton("向左");
	keyRight 	= GUILayout.RepeatButton("向右");
	keyBack 	= GUILayout.RepeatButton("向后");
	GUILayout.EndHorizontal();
	//判断按钮的按钮
	if(keyForward) {
		setAnimation(1,forward);
		hero.transform.Translate(Vector3.forward * f);
	}
	if(keyLeft) {
		setAnimation(2,left);
		hero.transform.Translate( - Vector3.right * f);
	}
	if(keyRight) {
		setAnimation(3,right);
		hero.transform.Translate(Vector3.right * f);
	}
	if(keyBack) {
		setAnimation(4,back);
		hero.transform.Translate(Vector3.back * f);
	}//*/
	//判断当前方向
	switch(pointer) {
	case 1:
		hero.transform.Translate(-Vector3.forward * f);
		break;
	case 2:
		hero.transform.Translate(-Vector3.right * f);
		break;
	case 3:
		hero.transform.Translate(Vector3.right * f);
		break;
	case 4:
		hero.transform.Translate(Vector3.forward * f);
		break;
	}
	//响应动画
	HandleAnimation(anim);
}

function setAnimation(p : int,o:Object[]) {
	pointer = p;	//指定方向为 p
	anim = o;		//指定贴图数组
}

function HandleAnimation(tex:Object[]) {
	//计算限制帧时间
	time += Time.deltaTime;
	//超过限制帧则切换图片
	if(time >= 1.0 / fps) {
		counter++;
		time = 0;

		if(counter >= anim.length){
			counter = 0;
		}
	}
	//将相应的贴图赋予主角对象
	hero.renderer.material.mainTexture = tex[counter];
	var rect : Rect = Rect(100,100,32,48);
	GUI.DrawTexture(rect,tex[counter],ScaleMode.StretchToFill,true,0); //一旁的缩略对象

}
</span></strong>

8、保存后,将文件拖曳给hero;

9、如图,给Mesh Renderer选择材质

10、通过调整摄像机和hero的位置,使摄像机能看到hero;

11、运行:

时间: 2024-10-12 23:10:41

Unity 3D之使用GameObject创建简单的可移动的对象的相关文章

Unity 3D使用GameObject创建一个简单的可移动物体

于Unity 3D游戏的开发.游戏脚本需要3D模拟组合,该脚本将被写入阻力3D为了达到效果对象. 以下是一个小实例,使用Unity 3D实现一个可控制移动的小人.小人能够向前.向后.向左和向右移动. 1.通过 File - > New Scene 创建一个场景: 2.点击Create -> Create Empty 创建一个GameObject,它即是游戏对象: 3.在Inspector 面板里将此对象的名字改为 "hero" (记得按回车键),等一下再脚本中将通过此名字来

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

Unity基础 NGUI插件 创建简单的按钮

Unity版本:4.5.1 NGUI版本:3.6.5 注意NGUI版本,网上的大部分教程都是2.x版本的,在步骤上面略有不同,此文适合初学者. 示例: 通过NGUI创建一个背景和按钮. 1.首先创建一个新场景,并保存,在此场景取名为Test: 在Unity主界面上:File — New Scene,然后保存场景,File — Save Scene As.. 在此,场景命名为Test,可以在Unity中看到如下效果:      2.网上的绝大部分教程都说要删除场景中的自带摄像机,即上文左侧图中的

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前的位置.z的朝向:用3条线.z轴正向.30°旋转.-30°旋转. 问题是:0点可以获得,P1点? P2点是未知的. 我尝试了2个小时,结果不竟如人意,少于沮丧. 不得不,再次花点时间系统的学习3D数学: 1 位移–向量和点: 点: 点和向量在数学上是一致的,实际生活中点的概念比较好理解,坐标点来定位

Unity 3D学习笔记之一 界面介绍

因为学校的课程,本学期对Unity 3D有学习的要求,在博客中记录下自己的Unity学习之路(内容摘录自书本和视频,书本为Unity 4.x从入门到精通) 一.Unity界面介绍 首先进入Unity3D,在菜单栏,File中new project,选择自己的工作路径初始时我们先默认不引入任何的package. 进入Unity的界面中,先对界面进行一下简要的介绍.区域大致依次分为Hierarchy.Scene.Inspector.Project,和上方的菜单栏(Menu bar)和工具栏(Tool

unity 3D里有两种动态加载机制

unity 3D里有两种动态加载机制: 一是Resources.Load: 一是通过AssetBundle: 其实两者本质上没有什么区别.Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的.其实场景里所有静态的对象也有这么一个加载过程,只是Unity后台替你自动完成了. 1.    AssetBundles是什么? 在一些大型的网络游戏,或者加载比较多的一些场景时,如果要等

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

使用C#编写游戏脚本 在前面提到,unity支持三种语言编写脚本:js,C#,boo.入门的时候建议只用js,因为js比较简单易懂,语法也不是很严格.但后来晋级的时候推荐使用C#,因为它比较符合unity的编程思想,执行效率更高.下面总结下怎么使用C#编写脚本. 继承MonoBehaviour类 在unity中,任何一个脚本,包括上述三种语言都需要去继承MonoBehaviour这个类.为什么我们之前写JS代码的时候没有继承咧?因为在创建JS代码的时候,系统会将其类名与继承关系隐藏起来. 在pr

Unity 3D入门简介

最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如果不作特别说明,均是指Windows平台的Unity 3D,版本是4.5.1f3. Unity 3D是一款游戏开发引擎,目前支持2D和3D游戏的开发,其最大的优势就是跨平台性非常好,可以很容易的将PC端制作的游戏移植到Android.IOS等移动平台,当然也可以创建网页游戏.刚开始进行Unity 3