【Unity2DMobileGame_PirateBomb08】—— 玩家攻击PlayerAttack

138 阅读2分钟

1.需要添加的参数

生成炸弹首先要获得GameObject物体

public GameObject bombPrefab;

希望玩家按下按键的时候就可以释放炸弹,但这里玩家不能连续释放炸弹,就行释放技能一样,技能需要CD,所以需要设置一个释放炸弹的CD。
使用两个float变量来做一个计时器,nextAttack代表下一次攻击的时间,每一次攻击释放一个炸弹之后,这一个时间都会在原有的时间基础上进行累加,累加的变量attackRate是一个固定的CD值。

public float nextAttack = 0; // 下一次攻击时间 当前时间+cd
public float attackRate = 0; // cd时间

2.添加Attack方法

定义攻击方法为public的,后面会把这款游戏制作成手机上面运行的,会通过一些按键来调用Attack函数方法。
攻击的时候就是判断时间,如果当前游戏时间大于下一次可攻击时间nextAttack,就可以执行函数方法。
在攻击的方法当中,使用Instantiate()生成炸弹。传入三个参数,生成一个物体(BombPrefab),生成的坐标位置(Player的当前位置)以及生成的角度(角度保持不变)。每一次攻击结束之后,还需要将下一次可攻击的时间重置,当前时间+CD时间。

// 玩家攻击释放炸弹的方法 
public void Attack()
{
    // 当前时间>下一次可攻击时间
    if (Time.time > nextAttack)
    {
        // 在场景中生成炸弹(生成物体,坐标,角度)
        Instantiate(bombPrefab, transform.position, bombPrefab.transform.rotation);
        // 重置下一次可攻击时间
        nextAttack = Time.time + attackRate;
    }
}

该攻击方法的调用时间放在玩家按下键位时调用,使用计算机上使用按下J键位释放炸弹。

if(Input.GetKeyDown(KeyCode.J))
    Attack();

3.设置变量赋值

  1. 为PlayerController脚本添加BombPrefab
  2. 设置技能CD为2秒 AttackRate = 2

4.为炸弹设置物理效果

当前炸弹的释放效果显得有些生硬,如下图
在这里插入图片描述
希望为炸弹增加一个弹动的效果,创建一个2D物理材质将起摩擦力和弹力都设置为0.5,将这一材质添加到炸弹的collider2D上。
添加材质后再次启动游戏可以看到玩家释放的炸弹拥有了弹力效果,动画更加灵动。
在这里插入图片描述