근접 공격 강좌
Weapon.cs
변수 생성.
public enum Type { Melee, Range };
public Type type;
public int damage;
public float rate;
public BoxCollider meleeArea;
public TrailRenderer trailEffect;
Player가 장착한 무기에 스크립트 추가, 변수 초기값 넣기
- Damage : 25, Rate : 0.4, MeleeArea : 무기의 충돌 영역(BoxCollider), Trail Effect : 무기에 추가할 Trail Effect
- Trail Effect: 잔상 효과, 해머를 휘두를 때 남는 잔상을 만든다.
> 기본 값들 설정, 그래프는 점점 변화하는 잔상의 모양, 아래로 향하게 하면 줄어든다.
Time, Min Vertex Distance로 잔상의 시간과 모양을 조절한다.
Color는 잔상의 색상
Materials를 Defalut-Line으로 설정
아래와 같이 Weapon의 근접공격 로직을 코루틴으로 완성한다.
public void Use()
{
if(type == Type.Melee)
{
StopCoroutine("Swing");
StartCoroutine("Swing");
}
}
IEnumerator Swing()
{
//1
yield return new WaitForSeconds(0.1f);//0.1f 대기
meleeArea.enabled = true;
trailEffect.enabled = true;
//2
yield return new WaitForSeconds(0.3f);//0.3f 대기
meleeArea.enabled = false;
//3
yield return new WaitForSeconds(0.3f);//0.3f 대기
trailEffect.enabled = false;
}
코루틴은 일정한 작업을 순서대로 시간간격을 두고 진행할 때 사용할 수 있다.
yield return null;로 하면 1프레임 대기
yield return WaitForSecond()는 설정한 시간만큼 대기
yield break;는 코루틴 종료
StopCoroutine() : 실행중인 코루틴 멈추기
StartCoroutine() : 코루틴 실행
완성한 Use()함수는 Player가 공격을 수행할 때 호출.
void Attack()
{
if (equipWeapon == null)
{
return;
}
fireDelay += Time.deltaTime;
isFireReady = equipWeapon.rate < fireDelay;
if(fDown && isFireReady && !isDodge && !isSwap )
{
equipWeapon.Use();
animator.SetTrigger("doSwing");
fireDelay = 0;
}
}
> 아이템을 장착시에만 동작. 무기에 설정한 Rate를 기준으로 FireReady상태가 되었을 때, fDown(Fire1)키가 눌렸을 때 동작. doSwing 트리거를 애니메이션에 동작시켜 캐릭터 동작 애니메이션을 수행하며, 만들어둔 잔상효과를 enable한다.
완성!!
근접공격 구현 & 잔상효과 끗
'Software Development > Unity' 카테고리의 다른 글
유니티 몇가지 팁 (0) | 2022.02.26 |
---|---|
Unity & PUN2 연결하기 기초 (포톤 클라우드 - 리얼타임) (0) | 2022.02.26 |
유니티 3D 간보기 - 골드메탈 3D강좌:아이템 처리/수류탄 장착 구현 (0) | 2022.02.06 |
유니티 3D 간보기 - 골드메탈 3D강좌:아이템 먹기/장착 (0) | 2022.02.06 |
유니티 3D 간보기 - 골드메탈 3D강좌:플레이어 컨트롤 (0) | 2022.02.05 |