Part2:Unity学习笔记十六 - Space Shooter(从视频最后一课向Done_Main.unity场景修改的过程)

第五步,如果没有漏什么,我们看起来和原游戏只差敌方会发子弹的飞船了,那就先做下对应prefab

正常建立一个空物体,改名EnemyShip,把敌方飞船模型和Prefabs/VFX/Engines下的engines_enemy粒子动画拖入EnemyShip中,另外建立一个空物体ShotSpawn作为地方子弹的射出位置

自己调整相对位置,大小,旋转角度,然后我们看一下,所有刚体、脚本、声音和碰撞体(这里简单用了个球形碰撞体)都是在父物体中,其实对本工程来说在父物体、子物体差别不大,因为没有相关操作

看下上面增加了组件,我们先添加脚本外的物体和两个已有脚本,这里Drag有点类似摩擦力,Angular Drag类似旋转方向角速度的摩擦力,可能是由于没旋转,这里没设为0

先添加脚本以外的内容,刚体,碰撞体和声音源,按照其内容添加Mover,DestroyByContact,EvasiveManeuver脚本,然后制作预设体

在GameController脚本上的hazards变量上把size改为4,同时最后一栏添加敌方飞船脚本,我们看了下WeaponController中似乎没什么内容,运行


出现了点问题,敌方飞船被固定在了原点,不能移动。还会被石头砸掉。分析下,被石头砸掉比较简单,碰撞销毁的函数除边界外应该只有一个在DestroyByContact中

检查下,由于在此场景中脚本我还没改

        if (other.tag == "Boundary" ) {
            return;
        }
        Instantiate(explosion,transform.position,transform.rotation);

没有排除敌人间的碰撞,也没对爆炸效果为空处理

改为     if (other.tag == "Boundary" || other.tag == "Enemy")
        {
            return;
        }

        if (explosion != null)
        {
            Instantiate(explosion, transform.position, transform.rotation);
        }

同时对几个陨石和飞船预设体添加标签Enemy

还是有问题

Enemy在GameController中生成,陨石也生成了,看来没什么问题,对比陨石添加的脚本Mover和DestroyByContact看来也没什么问题

禁用EvasiveManeuver脚本,像陨石一样正常掉落了,

检查EvasiveManeuver脚本可能改变敌方飞船速度和位置可能出现的地方,发现是    public Boundary boundary;这个变量展开没有填写

填写它,x轴要填的何时以免出界,z轴要填的略大,再运行,看起来飞的正常了,但是陨石和敌方飞船还是会互相撞毁,还需要检查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值