Related Posts Plugin for WordPress, Blogger...

3-19 Self Heal Special Ability Challenge

今天要來製作補血技能啦!本章先簡單帶大家製作能發動的補血技能,後面會再補上粒子特效跟快捷鍵的教學。首先,在觀看本章之前,要先有其他文章的積累才行,有需要的話請先看看下列文章唷:
3-9 Special Abilities System Overview 

3-10 Create An Area Of Effect Ability 

首先在Special Abilities資料夾中新增一個資料夾,取名為Self Heal。

於Self Heal資料夾內新增兩個Script,SelfHealBehaviour跟SelfHealConfig。

SelfHealBehaviour.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RPG.Core;

namespace RPG.Character{
 public class SelfHealBehaviour : MonoBehaviour, ISpecialAbility {

  SelfHealConfig config;
  Player player;

  void Start(){
   player = GetComponent ();
  }

  public void SetConfig(SelfHealConfig config){
   this.config = config;
  }

  public void Use(AbilityParams useParams){
   player.AdjustHealth (-config.GetExtraHealth ());
  }
 }
}



SelfHealConfig.cs:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace RPG.Character{
 [CreateAssetMenu(menuName= ("RPG/Special Ability/Self Heal"))]
 public class SelfHealConfig : SpecialAbilityConfig {
  [Header("Self Heal Specific")]
  [SerializeField] float extraHealth = 5f;

  public override ISpecialAbility AddComponent (GameObject gameObjectAttachTo){
   var behaviourComponent = gameObjectAttachTo.AddComponent ();
   behaviourComponent.SetConfig (this);

   return behaviourComponent;
  }

  public float GetExtraHealth(){
   return extraHealth;
  }

 }
}


大家應該會注意到在SelfHealBehaviour.cs中的Use方法,使用了player.AdjustHealth (-config.GetExtraHealth ()); 因為我將原本Player.cs的TakeDamage方法改名為AdjustHealth,為了在語義上跟補血技能相符合才更名,畢竟總不能呼叫TakeDamage方法卻讓玩家補血吧?使用『調整血量』這個稱呼更契合受傷跟補血兩種情境,請大家如要改名可以使用開發工具的Refactor功能,程式碼的其他地方都會跟著改唷。


寫好程式碼後,便可以在Self Heal資料夾中按右鍵,選擇Create/RPG/Special Ability/Self Heal來新增技能,方便吧!

自己調整一下技能的能量消耗跟補血值,但目前還沒有特效。

將新技能Self Heal L1拉到Player的第一個技能欄位吧,因為目前遊戲設計上是透過滑鼠按右鍵施放第一個技能,所以測試時會有這個限制,後面再來製作快捷鍵施放技能的方法。


接下來試玩遊戲看看吧!先讓怪物打到低血量。

趕快按右鍵施放補血技能!

留言