尊者 发表于 2012-12-20 18:32

unity3d中2D射击游戏2:发射子弹声音及碰撞事件的编写

本帖最后由 尊者 于 2012-12-20 18:44 编辑

二、发射子弹声音及碰撞事件的编写(bullet与enemy碰撞)
1.为发射的子弹添加声音,这里用到一个生成声音的小工具:
2.生成想要的声音文件后,在BulletPrefab中添加

小提示:在Rolloff Mode中更改选项后 可更改声音效果
3.添加要攻击的敌人,从高处落下的球体,我们添加一个sphere

调整其X、Y、Z轴 为0,为sphere创建一个红色的材质

4.新建一个enemyScript,定义var enemySpeed:int; 并指定速度为5.
添加如下代码:
var enemySpeed:int;

function Update () {
      
      amtToMove=enemySpeed*Time.deltaTime;
      transform.Translate(Vector3.down*amtToMove);
}这时球会一直沉下去,我们添加约束条件
添加如下代码:      if(transform.position.y<=-3)
      {
                transform.position.y=6.5;
               
                transform.position.x=Random.Range(-6,6);
      }实现任一X轴下落.
5.为bullet与enemy添加撞击事件
选择enemy-

勾选Is Trigger
在BulletScript中添加撞击事件,代码如下:function OnTriggerEnter(otherObject:Collider)
{
      
}选择enemy 添加add Tag...

添加一个enemy的Element

返回选择enemy 设置Tag为enemy

在BulletScriptfunction OnTriggerEnter中添加:function OnTriggerEnter(otherObject:Collider) //otherObject为绑定的tag enemy 并带一个碰撞的参数Collider
{
      if(otherObject.gameObject.tag=="enemy")
      {
                PlayerScript.playerScore+=100;//分数+100
               
                otherObject.gameObject.transform.position.y=7;//碰撞发生重新设置enemy的y轴坐标
               
                     otherObject.gameObject.transform.position.x=Random.Range(-6,6);//重置enemy x轴坐标
                     
                Destroy(gameObject);//销毁bullet
      }
}更改enemy与player的z轴 都为0,播放后实现 一旦碰撞发生分数+100、销毁子弹、重置enemy坐标。

wai2dance 发表于 2012-12-30 21:03

顶一个    这个教程我看过了 还不错哦呵呵

尊者 发表于 2013-1-5 20:23

源码下载:http://www.u3dchina.com/t-2342-1-1.html

yajinyee0306 发表于 2013-2-28 10:50

謝謝大大的教學分享,最近正好在學Unity不過卡在很多函式跟功能都不知道。
謝謝!

jmn 发表于 2013-6-17 18:51

看上去很厉害的样子

joyhollo 发表于 2017-5-6 14:58

好帖就是要顶

兜了一圈 发表于 2017-5-6 14:31

真心顶

joyhollo 发表于 2017-5-6 14:38

难得一见的好帖

你是我的泡面 发表于 2017-5-6 14:51

很好哦

小鬼魂 发表于 2017-5-6 14:28

不错不错
页: [1] 2 3 4
查看完整版本: unity3d中2D射击游戏2:发射子弹声音及碰撞事件的编写