1. 添加旋转的电池—>添加刚体—>取消重力勾选动力学?添加胶囊体碰撞器?编写脚本?触发碰撞时调用第一人称控制器里的函数cellpickup
2. AudioSource.PlayClipAtPoint(声音文件,位置);//实现在一个位置播放一次声音然后移
除销毁自己
3. 限制进入小屋功能:设置电池的预置,添加电池在场景中,编写Invertor的角色脚
本(如果电池收集数等于4个时候可以开门)。---------静态变量:方便其他脚本的使用,不需要调用物体、组件以及属性,直接可以调用脚本中的静态变量。 4. 动态显示收集电池个数:
1)创建GUI Texture物体(用来显示图片和纹理的物体):选中纹理,在层次面板
中点击创建GUI Texture,创建成功相应纹理的图片。
2)建立数组来存放动态的多个图片,下坐标可以使用收集的电池数
数组的申请:var textures:Texture2D[];
GUITexture创建:var power_gui:GUITexture;
将纹理赋予到GUITexture的纹理上:power_gui.texture = textures[change];
5. 更换物体的主材质: #pragma strict
//能源个数与手机时播放的音频
static var change:int = 0; var pickup_sound:AudioClip; //电池图片数组与引用变量 var textures:Texture2D[];
var powergui_bl:GUITexture;
//仪表盘主材质纹理数组与引用变量 var main_textures:Texture2D[]; var chargeMeter_bl:Renderer;
function Start () { change = 0; }
//收集能量源函数 function cellpickup() {
}
//播放“收集音频”
AudioSource.PlayClipAtPoint(pickup_sound,transform.position); //收集计数 change++;
//替换GUITexture的texture
powergui_bl.texture = textures[change]; //替换Renderer下的material.mainTexture
chargeMeter_bl.material.mainTexture = main_textures[change];
6. 当收集能量源物体收集不到4个时候提示信息,“需要收集能量源”。 使用物体时需要绑定物体与变量,门的音频绑定锁住的声音直接调用声音的播放就是锁住的声音:door_bl.audio.play(); 七、刚体和实例化
1. 创建椰子,预置,创建空物体,写脚本?开火时播放声音
2. 实例化椰子:
var newcoconut:Rigidboy=Instantiate(coconut_bl,transform.position,transform.rotation); 3. 实现速度:newcoconut.velocity = transform.forward*30.0;//只有物体是刚体时可以 4. 3秒后椰子自动销毁:新建脚本
5. 忽略碰撞命令:(①、给添加的模型选中碰撞体)
Physics.IgnoreCollision(coconutshy_bl.collider,newcoconut.collider,true);//参数一:碰撞体,参数二:碰撞体,参数三:是否忽视碰撞
发射出的椰子不与角色控制器发生Physics.IgnoreCollision(transform.root.collider,newcoconut.collider,true); 6. 限制玩家随意发射椰子,直到到达coconutShy 7. function OnTriggerEnter(col:Collider){} // 进入触发区域 function OnTriggerExit(col:Collider){} //从触发区域出来
8. 收集电池之前不显示GUITexture图片,收集的时候显示。使能
9. 导入标靶物体:在模型里设置生成碰撞器,在animations动画分割
10. 设置标靶物体:给物体里target_pivot里的内容添加刚体的动力学。,添加target脚本来控制靶播放动画:targetroot=transform.parent.transform.parent.animation;//设置初始动画
11. Function OnCollisionEnter(theobject:Collision){} //两个原始物体的碰撞执行函数 12. 协同程序:StartCoroutine(“targethit”); 协同程序类似于其他程序的子线程一类,可以运
行本代码同时运行脚本中其他的代码,它被称为是一种优化代码结构的方法,协同程序
可以执行或暂停命令一直到符合一定的条件。可以创建时间延时只是一小部分的内容。 yield new WaitForSeconds(reset_timer);//等待3秒钟,时间延时命令
碰
撞
:
// transform.root.collider:脚本依附的总根,transform.parent:脚本依附的父组件
13. 打倒所有靶之后,收集到能量源,能量源替换成预置的电池物体 14. 取得能源:
static var target_count:int = 0;
static var havewon:boolean = false; var win_sound:AudioClip;
var cellprefab:GameObject;
function Update () { if(target_count == 3 && havewon == false){ audio.PlayOneShot(win_sound); }
15. 第一次进入射击棚的时候提示信息,并显示准心。添加GUITexture和GUIText来设置准
心2D图片和提示信息。
16. 增加游戏难度:①、击倒后缩短重置事件。②、判断三个标靶是否都被击倒,击倒时得
分----胜利的脚本:
#pragma strict
static var target_count:int = 0;
static var havewon:boolean = false; var win_sound:AudioClip; var cellprefab:GameObject; var fushu:GUIText; var down_timer:float = 0; var fushu_bl:int = 30;
function Update () { if(target_count == 3 && havewon == false){
}
audio.PlayOneShot(win_sound);
var win:GameObject = transform.FindChild(\//占位置
win.transform.Translate(-1,0,0);
//实例化一个预置的电池放在占位置的地方
Instantiate(cellprefab,win.transform.position,transform.rotation); //销毁占位置的物体 Destroy(win); havewon = true;
if(!fushu.enabled) fushu.enabled = true;
}
var win:GameObject = transform.FindChild(\//占位置
win.transform.Translate(-1,0,0);
//实例化一个预置的电池放在占位置的地方
Instantiate(cellprefab,win.transform.position,transform.rotation); //销毁占位置的物体 Destroy(win); havewon = true;
}
if(tfushu.enabled == true){ }
fushu.text = \得分:\if(target == 3){ down_timer += Time.deltaTime; if(down_timer > 0.4){ target.reset_timer -= 0.2; }
}
fushu_bl += 100; down_timer = 0;
17. 飞行浏览模式----按住鼠标右键+a/s/w/d 18. 游戏运行中更换脚本的运行
1)用自动布局的方式绘制按钮:if(GUILayout.Button(“Add_Componetn”,GUILayout.Height(40),GUILayout.Width(100))){ Obj.AddComponetn(“xuanzhuan”);//当点击按钮的时候添加组件xuanzhuan }
if(GUILayout.Button(“Add_Componetn”,GUILayout.Height(40),GUILayout.Width(100))){ }
Obj.AddComponetn(“xuanzhuan”);//当点击按钮的时候添加组件xuanzhuan
if(GUILayout.Button(“Del_Componetn”,GUILayout.Height(40),GUILayout.Width(100))){ var Script:Object = obj.GetComponent(“xuanzhuan”);//获取组件 Destroy(Script);//当点击按钮的时候删除组件xuanzhuan }
第八章粒子系统 1. 粒子系统
1)概念:粒子系统是在三维空间中渲染出来的二维图像,主要用于表现烟、火、水滴、落叶等效果,粒子系统由粒子发射器、粒子动画器、粒子渲染器三个独立部分组成。 2)创建一个old粒子系统----①创建空物体。②Add Component?Effects?Legacy Particles?Particle Renderer(粒子渲染器)。③Add Component? Effects?Legacy Particles?Ellipsoid Particle Emitte(粒子发射器)。④Add Component? Effects?Legacy Particles?Particle Animator(粒子动画器) 2. 制作篝火:
1)导入模型(不用勾选“生成碰撞器”,可以在场景中为物体添加胶囊碰撞器)campfire 2)添加粒子系统(Particle Effect)的物体,①调整粒子系统的发射器的数量Inspector?Particle System?Emission.Rate=20。②调整形状
Inspector?Particle
System?Shape.Shape。③调整锥体形成火焰的效果,底下控制点调整粗细Inspector?Particle System?Shape.Radius,上面的控制点调整角度Inspector?Particle System?Shape.Angle
3)如何使得两个物体移动到视图:点击一物体在场景中按F键,选择另一个物体,在GameObject中选择Move to View
4)添加材质:在材质文件夹中添加材质球并把图片选择,在Inspector?Shader里选择ParticlesAdditive(透明效果,不是一张图片的效果)在Inspector?Particle