啦啦啦~把每天的学习进度搬到这里来~\(≧▽≦)/~
1. 按空格键发射炮弹
在playercontroller里面添加如下代码:
var projectile_bl:GameObject
if(Input.GetKeyDown(KeyCode.Space)){
Instantiate(projectile_bl,transform.position,transform.rotation);
}
2.实现陨石的自由下落。
创建陨石,Scale缩放分别设置为0.6,0.6,1,位置将Y设置为3
接着添加陨石向下落的脚本,文件名为RockController,代码如下
var speed:float=2.0;
function Update () {
transform.Translate(0,-speed*Time.deltaTime,0);
}
3.实现陨石的随机降落。
将RockController的Update代码改为:
function Update () {
if(transform.position.y<-1.3)
transform.position=new Vector3(Random.Range(-3,3),3.5,0);
transform.Translate(0,-speed*Time.deltaTime,0);
}
4.太空背景的移动
拖一个精灵到层次面板,把星星的图片拖拽上去,把位置改为0,0,1,改动缩放比例为6,6,1。
之后改动摄像机的位置,改为0,0,-8。
创建BackgroundController脚本,添加如下代码:
var speed:float=1.0;
function Update () {
if(transform.position.y<-4.0)
transform.position=new Vector3(0,0,1);
transform.Translate(0,-speed*Time.deltaTime,0);
}
5.太空背景的循环移动
修改BackgroundController脚本。
var speed:float=1.0;
function Update () {
if(transform.position.y<-3.9)
transform.position=new Vector3(0,8,1);
transform.Translate(0,-speed*Time.deltaTime,0);
}
把摄像机的背景颜色改成黑色。
6. 碰撞的准备—添加组件
把炮弹的预置文件拖到层次面板上,选择炮弹,移除胶囊碰撞体,并添加碰撞体,Component里Physic,Capsule碰撞体。
在Capsule Collider里勾上is Trigger属性,并且把Y设为0.12,Radlus设为0.05,Height设为0.62
添加刚体组件,使炮弹具有物理效果。取消使用重力选项。把Freeze Position的Z和Rotation的XYZ都勾上。
选中炮弹,为它添加标签projectile。把层次面板上的projectile拖到预制件上。删除场景中的projectile。
2016-1-18
1.碰撞检测函数
为陨石和飞机添加立方体碰撞器碰撞组件,勾选上IS TRIGGER属性,为陨石添加RigidBody刚体属性,取消重力选项,并和炮弹做一样的约束。
要碰撞的两个物体必须在同一个平面上。
打开陨石控制脚本,添加碰撞检测脚本。
function OnTriggerEnter(other:Collider){
if(other.tag=="projectile"){
transform.position=new Vector3(Random.Range(-2.6,2.6),3.5,0);
Destroy(other.gameObject);
}
<span style="white-space:pre"> <span style="font-family:Menlo;"><span style="color:#009695;">if</span><span style="color:#444444;">(</span><span style="color:#444444;">other</span><span style="color:#444444;">.</span><span style="color:#444444;">tag</span><span style="color:#444444;">==</span><span style="color:#f57c00;">"</span><span style="color:#f57c00;">Player</span><span style="color:#f57c00;">"</span><span style="color:#444444;">)</span>
<span style="color:#444444;"> </span><span style="color:#444444;">transform</span><span style="color:#444444;">.</span><span style="color:#444444;">position</span><span style="color:#444444;">=</span><span style="color:#009695;">new</span><span style="color:#444444;"> </span><span style="color:#444444;">Vector3</span><span style="color:#444444;">(</span><span style="color:#444444;">Random</span><span style="color:#444444;">.</span><span style="color:#444444;">Range</span><span style="color:#444444;">(-</span><span style="color:#f57c00;">2.6</span><span style="color:#444444;">,</span><span style="color:#f57c00;">2.6</span><span style="color:#444444;">),</span><span style="color:#f57c00;">3.5</span><span style="color:#444444;">,</span><span style="color:#f57c00;">0</span><span style="color:#444444;">);</span></span></span>
}
2016-1-19
昨天看了一小小小节就又去打红警去了哈哈哈得抓紧啦。
1. 爆炸效果
先把预置文件夹的精灵拖到层次面板。改名为explosionEnemy,position y=0.5;Scale 0.88,0.98,1
把有七张小图的爆炸效果图片拖拽到上边,初始位置为Tiling,偏移量叫Offset,根据简单地数学运算控制要显示第几张图片。
新建脚本文件explosionController
添加如下代码:
#pragma strict
var index:int=0;
var frameNumber:int=7;//帧数
private var frameRate:float=0;//帧数率
private var myTime:float=0;//计时器
private var myIndex:int=0;//帧计数
function Start () {
frameRate=1.0f/frameNumber;
}
function Update () {
myTime += Time.deltaTime;
myIndex=myTime*frameNumber;
index=myIndex%frameNumber;
<span style="white-space:pre"> </span>//设置Tiling与Offset属性
renderer.material.mainTextureScale=new Vector2(frameRate,1);
renderer.material.mainTextureOffset=new Vector2(index*frameRate,0);
if(index==frameNumber-1) Destroy(gameObject);
}