void OnTriggerEnter ( Collider _other ) {
DamageInfo dmgInfo = null;
if ( _other.gameObject.layer == Layer.melee_player ) {
Transform parent = _other.transform.parent;
DebugHelper.Assert( parent, "melee collider's parent is null" );
if ( parent == null ) {
return;
}
dmgInfo = parent.GetComponent<DamageInfo>();
// show the melee hit effect
if ( fxHitMelee != null ) {
fxHitMelee.transform.position = _other.transform.position;
fxHitMelee.transform.rotation = _other.transform.rotation;
fxHitMelee.particleEmitter.Emit();
}
}
else if ( _other.gameObject.layer == Layer.bullet_player ) {
BulletInfo bulletInfo = _other.GetComponent<BulletInfo>();
dmgInfo = bulletInfo.ownerDamageInfo;
// show the bullet hit effect
if ( fxHitBullet != null ) {
fxHitBullet.transform.position = _other.transform.position;
fxHitBullet.transform.rotation = _other.transform.rotation;
fxHitBullet.particleEmitter.Emit();
}
}
else {
return;
}
// if we don't get damage info, just return
DebugHelper.Assert( dmgInfo, "can't find damage info for given layer" );
if ( dmgInfo == null ) {
return;
}
DamageRule.Instance().CalculateDamage( this.zombieInfo, dmgInfo );
}
}