// ヒット関連処理 ------------------------ /// <summary> /// キャラクターにヒットしていればダメージを与え、act を返す。 /// オウンヒット判定はダメージが入るかどうかのみに関与し、戻り値はオウンヒットに関係なく act が返る。 /// </summary> void damageTohitCh( StringParticlePool.StringUnit line, ref RaycastHit hit, _Action3 act, _Hit3 hitter, Vector3 forceSeed, float damageRate, bool isOwnHittable = true ) { if (!isOwnHittable && act == line.owner) { return; // オウンヒットなら抜ける } if (line.owner && !line.owner.targetTeam.isMate(act.attachedTeam)) { return; // 攻撃対象以外なら抜ける } var landing = hitter.landings ? hitter.landings.erode : GM.defaultLandings.erode; //暫定 //var landing = hitter.landings.erode;//本式はこっち landing.emit(hit.point, hit.normal); var force = forceSeed * (GM.t.deltaR * bulletSize * hitForceRateCh); var d = damage * damageRate; var ds = new DamageSourceUnit(d, 0.5f, 1.0f, moveStoppingDamage * damageRate, moveStoppingRate); hitter.shot(ref ds, force, ref hit, line.owner); }
protected override void onHit(_Hit3 hitter, ref RaycastHit hit, Vector3 dir) { var landing = hitter.landings ? hitter.landings.fragmentation : GM.defaultLandings.fragmentation; //var landing = hitter.landings.fragmentation; landing.emit(hit.point, hit.normal); var ds = new DamageSourceUnit(damage, 0.8f, 1.0f, 0.0f, 0.0f); hitter.shot(ref ds, dir * damage, ref hit, owner); }