ν¬λ‘κ·Έ
νκ·Έ: KillLog, PoliceAndThief, Unity
μΉ΄ν κ³ λ¦¬: PoliceAndThief
π KillLog
μ£½κ³ μ£½μ΄λ κ²μμ νλ€λ³΄λ©΄ ν¬λ‘κ·Έλ₯Ό μμ°μ€λ½κ² μ νκ² λλ€.
λ΄ νλ©΄κ³Ό μ νλ©΄μ μ΄λ»κ² λμ°λκ°λ₯Ό ν¬ν€μλ²λ₯Ό ν΅ν΄ μμ보μ.
π λμμΈ
μΌλ° ν¬λ‘κ·Έμ κ°μ΄ λ€μκ³Ό κ°μ ννλ‘ λ§λ€μμΌλ©°
곡격ν μ¬λμ λλ€μκ³Ό 곡격λΉν μ¬λμ λλ€μμ νμν΄μ€λ€.
π μ리
곡격μ νλ©΄ νλ μ΄μ΄μ 무기 Collider κ° On λλ©° Collider μ λΏμΈ νλ μ΄μ΄μ TakeDamage λ©μλκ° νΈμΆλλ€.
μ΄ λ 곡격ν μ¬λμ λλ€μλ ν¨κ» μ λ¬νμ¬ ν¬λ‘κ·Έλ₯Ό λμ΄λ€.
ν¬λ‘κ·Έλ λͺ¨λ νλ μ΄μ΄κ° νμΈν μ μμ΄μΌ νλ―λ‘ RPCλ₯Ό ν΅ν΄ μ€ν°ν΄μΌ νλ©° ν¬λ‘κ·Έ SetUp λν RPC λ‘ ν΄μ£Όμ΄μΌ νλ€.
π Code
Player μκ² λΆμ΄μλ Knife
1
2
3
4
5
6
7
8
protected void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
MyPlayer player = other.GetComponent<MyPlayer>();
player.TakeDamage(GetComponentInParent<MyPlayer>()._NickName);
}
}
곡격μ λ°μ Player
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 곡격ν νλ μ΄μ΄μ λλ€μμ λ°μμ΄
public void TakeDamage(string attacker)
{
_pv.RPC("RPC_TakeDamage", RpcTarget.All);
_pv.RPC("RPC_ShowKillLog", RpcTarget.All, attacker);
}
[PunRPC]
private void RPC_ShowKillLog(string attacker)
{
if(_pv.IsMine)
{
// νλ§ μΌλ‘ μ€ν° => KillLog μ μλ SetUp λ©μλλ₯Ό λ€μ RPC λ‘ λͺ¨λμκ² μ μ‘
ObjectPooler._Instance.PoolInstantiate("KillLog").GetComponent<PhotonView>().RPC("SetUp", RpcTarget.All, attacker, _nickName);
}
}
KillLog
1
2
3
4
5
6
7
// 곡격ν νλ μ΄μ΄μ 곡격λΉν νλ μ΄μ΄ λλ€μμ μΈν
[Photon.Pun.PunRPC]
public void SetUp(string attacker, string attacked)
{
_attacker.text = attacker;
_attacked.text = attacked;
}
π» Execute
μ€νμν€λ©΄ λ€μκ³Ό κ°μ΄ 곡격, νΌκ²© νλ μ΄μ΄ νλ©΄μ λͺ¨λ μ λνλλ κ²μ μ μ μλ€.
λκΈλ¨κΈ°κΈ°