噩梦射手(SurvivalShooter)教程(八)

本教程详细介绍了Unity官方案例SurvivalShooter中受伤效果的实现,通过调整UI图像透明度,使得角色受伤时屏幕瞬间飙红。同时,讲解了主角攻击的创建,包括枪口火花的粒子系统设置、PointLight的控制以及LineRenderer的使用,为玩家提供射击反馈。最后,提到了分数UI的添加,为后续的得分系统铺垫。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

SurvivalShooter 是Unity的官方教程案例

受伤飙红

  1. 接着上一节的UI,在Hierarchy里选中Canvas右击UI->Image,新建一个image。将image拉伸到整个游戏界面一样大,将color的透明度A调成0%
    这里写图片描述
  2. 接着我们在代码中更改透明度,让主角被攻击时这个image的透明度瞬间到100%。在PlayerHealth下加入代码:
    这里写图片描述public float flashTime = 5f;//flashTime是图片闪烁的时间值
    public Color flashColor = new Color (1f, 0f, 0f, 0.1f);
    //flashColor是闪烁的颜色,0.1f表示以10%的红色闪烁
    bool isDamaged = false;

    这里写图片描述damageImage.color = Color.Lerp
    (damageImage.color, Color.clear, flashTime*Time.deltaTime);
    //这里再次用到插值的方法,让红色的image再次回归透明
  3. 把先前做好的image拖入到变量里
    这里写图片描述
  4. 运行,可以看到主角被攻击时屏幕飙红。
    这里写图片描述

主角攻击

  1. 枪口的火花:在Hierarchy里选中Player下的GunBarrelEnd右击Light->PointLight,设置各项参数,颜色(238,186,93)
    这里写图片描述
  2. 将场景中原本的Directional Light调暗,具体亮度随意
    这里写图片描述
  3. 先看看灯光效果
    这里写图片描述
  4. 还行,接下来把Point light中Light先勾选掉,待会在主角攻击时再把枪口的火花亮起
    这里写图片描述
  5. 选中Player下的GunBarrelEnd添加Particle System组件,粒子系统。开始填参数:颜色(249,232,0)
    这里写图片描述
  6. 选中 Particle System 右下角的+ 号,选中SizeOverLifeTime
    这里写图片描述
    这里写图片描述
  7. 同样选中 Particle System 右下角的+ 号,选中ColorOverLifeTime,颜色可以根据自己的需要添加
    这里写图片描述
  8. 同样选中 Particle System 右下角的+ 号,选中VelocityOverLifeTime,将z改一点
    这里写图片描述
  9. 把Particle System的Looping勾选掉。
  10. 选中Player下的GunBarrelEnd添加LineRenderer组件,修改参数
    这里写图片描述
  11. 新建一个script,EnemyHealth
    这里写图片描述
  12. 新建一个script,PlayerShoot
    这里写图片描述
//得到主角的各项组件
    ParticleSystem gunParticle;
    LineRenderer gunLine;
    Light gunLight;
//利用射线检测碰撞、
    Ray shootRay;
    int shootMask;
    RaycastHit shootHit;
    float timer;//每次射击的时间
    public int range = 100;//射击的范围
    public float timeBetweenLine=0.15f;//射击冷却时间
    public int damage=20;//主角攻击力

这里写图片描述
这里写图片描述

Input.GetButton ("Fire1")//Unity默认Fire1为左键
timer = 0;//每次射击时间清零
gunLine.enabled = true;//打开射线
gunLine.SetPosition (0, transform.position);//设置射线的起始位置,需要计算的是射线的方向
if (Physics.Raycast (shootRay, out shootHit, range,shootMask)) {
EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth> ();//得到怪物的生命值
if (enemyHealth != null) 
{
    enemyHealth.TakeDamage (damage);//扣血逻辑
}
    gunLine.SetPosition (1, shootHit.point);//射线方向
    } else
        gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);//射线方向。

先添加一个layer
这里写图片描述
将怪物Prefabs的layer以及Environment除了Floor之外的物体的layer全部设置成Shootable
这里写图片描述
运行,点击,可以看见线条了。
这里写图片描述

分数Scroe

  1. 在Hierarchy里选中Canvas右击UI->Text,新建一个Text,调整位置和参数:
    这里写图片描述
    效果图
    这里写图片描述
  2. 关于杀死怪物得分,我们在下一节制作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值