캐릭터(솔져) 스킬 만들기
솔져의 스킬 기능을 구현해봤습니다.
좌shift - 달리기(이속up)
E스킬 - 생체장(자힐)
마우스 우클릭 - 나선로켓
1) 달리기는 캐릭터의 이동속도를 높여주고, 달리기 애니메이션을 플레이해줍니다.
2) 생체장스킬은 생체장과 비슷한 오브젝트를 만들어서 캐릭터 포지션에 설치한 후 캐릭터의 부족한 체력을 채워줍니다.
3) 나선로켓은 일정속도와 일정회전력을 가지면서 나아가고, 오브젝트와 닿았을 때 사라지며 이펙트를 플레이합니다. 직격뎀과 거리별 스플래쉬데미지를 아직 구현하지 않아서 나선로켓은 미완성입니다.
[SkillManager.cs]
public class SkillManager : MonoBehaviour
{
UnitController unitController;
public GameObject prfSoldierESkill;
public GameObject prfSoldierRocket;
public Transform trmESkillSpawn;
public Transform trmMouse1SkillSpawn;
[Header("Speed")]
[SerializeField]
private float sprintSpeed = 1.75f;
[Header("CoolTime")]
[SerializeField]
private float coolTimeE = 18f;
[SerializeField]
private float coolTimeMouse1 = 6f;
[Header("Bool")]
[SerializeField]
private bool isActiveESkill;
[SerializeField]
private bool isActiveMouse1Skill;
void Start()
{
unitController = GetComponent<UnitController>();
isActiveESkill = false;
isActiveMouse1Skill = false;
}
void Update()
{
if(isActiveESkill == true)
{
coolTimeE -= Time.deltaTime;
if (coolTimeE <= 0)
{
coolTimeE = 18f;
isActiveESkill = false;
}
}
if(isActiveMouse1Skill == true)
{
coolTimeMouse1 -= Time.deltaTime;
if(coolTimeMouse1 <= 0)
{
coolTimeMouse1 = 6f;
isActiveMouse1Skill = false;
}
}
}
//솔져 우클릭 스킬.
public void CreateRocket()
{
if (isActiveMouse1Skill == true)
return;
// 로켓 투사체 발사.
GameObject objRocket = Instantiate(prfSoldierRocket);
objRocket.transform.position = trmMouse1SkillSpawn.transform.position;
objRocket.transform.rotation = trmMouse1SkillSpawn.transform.rotation;
isActiveMouse1Skill = true;
}
// 솔져 E스킬.
public void CreateHealArea()
{
if (isActiveESkill == true)
return;
GameObject objESkill = Instantiate(prfSoldierESkill);
objESkill.transform.position = trmESkillSpawn.transform.position;
isActiveESkill = true;
Destroy(objESkill, 5.0f);
}
// 솔져 좌shift스킬.
public void Sprint(bool isActive)
{
if(isActive == true)
{
unitController.currSpeed = unitController.walkSpeed * sprintSpeed;
}
else
{
unitController.currSpeed = unitController.walkSpeed;
}
}
}
[UntiController.cs]
public class UnitController : MonoBehaviour
{
SkillManager skill;
void Start()
{
skill = GetComponent<SkillManager>();
}
void Update()
{
Skill_LeftShift(); // 좌Shift스킬.
Skill_E(); // E스킬.
Skill_MouseRight(); // 마우스 우클릭 스킬.
}
void Skill_MouseRight()
{
if (Input.GetMouseButtonDown(1))
{
skill.CreateRocket();
}
}
void Skill_LeftShift()
{
if (Input.GetKey(KeyCode.LeftShift))
{
skill.Sprint(true);
unitAnimController.IsRun(true);
}
else if (Input.GetKeyUp(KeyCode.LeftShift))
{
skill.Sprint(false);
unitAnimController.IsRun(false);
}
}
void Skill_E()
{
if (Input.GetKeyDown(KeyCode.E))
{
skill.CreateHealArea();
}
}
}
[ESkill.cs]
public class ESkill : MonoBehaviour
{
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Unit")
{
Debug.Log("유닛 체력 초당 +20");
}
}
}
'Unity > Unity FPS게임 프로젝트(오버워치라이크)' 카테고리의 다른 글
[Unity 게임프로젝트] FPS게임<오버워치>(6) - 캐릭터 애니메이션 조정(미완성) (0) | 2024.05.29 |
---|---|
[Unity 게임프로젝트] FPS게임<오버워치>(5-2) - 캐릭터 스킬 기능 활성화(미완성) (0) | 2024.05.27 |
[Unity 게임프로젝트] FPS 게임<오버워치>(4) - 적 봇 생성, 총 슈팅 기능, 재장전 모드 구현 (0) | 2024.05.22 |
[Unity 게임프로젝트] FPS 게임<오버워치>(3) - 캐릭터 점프, 앉기 기능 구현 (0) | 2024.05.15 |
[Unity 게임프로젝트] FPS 게임<오버워치>(2) - 캐릭터 이동 및 카메라 회전, 마우스 커서 고정 기능 구현 (0) | 2024.05.15 |