ShotObj
ShotObj.cs
using UnityEngine;
using System.Collections;
public class ShotObj : MonoBehaviour {
protected float attackPower = 1;
protected Vector3 initPos;
protected bool isWork = false;
public void InitShotObj(float setupAttackPower)
{
attackPower = setupAttackPower;
}
void OnTriggerEnter2D(Collider2D other)
{
// 사용중이지 않을 때 충돌 처리를 막는다.
if(!isWork) return;
// 적 캐릭터 인 경우, 공격하여 피해를 가한다.
if (other.CompareTag("enemy") || other.CompareTag("boss"))
{
// 공격 후 게임 오브젝트 제거.
AttackAndDestroy(other);
}
// 게임 플레이 화면 외부로 진입했을 때 초기 위치로 돌아가도록 한다.
else if (other.CompareTag("invisibleArea"))
{
ResetShotObj();
}
}
protected void AttackAndDestroy(Collider2D other)
{
IDamageable damageTarget =
(IDamageable)other.GetComponent(typeof(IDamageable));
damageTarget.Damage(attackPower);
// 공격 후 초기화.
ResetShotObj();
}
// 사용중이지 않을 때 돌아갈 위치 저장.
public void InitReturnPosition(Vector3 setupInitPos)
{
initPos = setupInitPos;
}
// 충돌 처리를 허가할 때 사용.
public void TurnOnTrigger()
{
isWork = true;
}
// 발사 게임 오브젝트를 초기화한다.
public void ResetShotObj()
{
transform.position = initPos;
isWork = false;
rigidbody2D.velocity = Vector3.zero;
}
}
Last updated