Ejemplo n.º 1
0
    // ヒット関連処理 ------------------------


    /// <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);
    }
Ejemplo n.º 2
0
    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);
    }