Exemple #1
0
    void SetGemsEffect(GameObject bullet)
    {
        for (int i = 0; i < gemManager.Types.Length; i++)
        {
            switch (gemManager.Types[i])
            {
            case GemManager.GemType.Homing:
                Homing h = bullet.GetComponent <Homing>();
                h.rotSpeed = gemManager.Amounts [i] * HOMING_ROT;
                h.enabled  = true;
                break;

            case GemManager.GemType.Bouncing:
                PlayerProjectile p1 = bullet.GetComponent <PlayerProjectile> ();
                p1.bounces = gemManager.Amounts [i] / 4 + 1;
                p1.enabled = true;
                break;

            case GemManager.GemType.Poison:
                PlayerProjectile p2 = bullet.GetComponent <PlayerProjectile> ();
                p2.poisonDamage = gemManager.Amounts [i] * POISON_DAMAGE;
                p2.enabled      = true;
                break;

            case GemManager.GemType.Vampire:
                PlayerProjectile p3 = bullet.GetComponent <PlayerProjectile> ();
                p3.vampireRecovery = gemManager.Amounts[i];
                p3.enabled         = true;
                break;
            }
        }
    }
Exemple #2
0
    protected override IEnumerator Fire()
    {
        yield return(new WaitForSeconds(attackRate));

        while (true)
        {
            animationController.PlayAttackAnimation();

            yield return(new WaitForSeconds(0.9f));//変数置いてやる必要があるかも

            Homing homing = new Homing();
            homing.Velocity       = 3f;             // 仮の値
            homing.AttackPoint    = 20;
            homing.HomingStrength = homingStrength; // 仮の値
            homing.Direction      = transform.up;   // 上方向
            homing.Target         = playerTf.gameObject;
            GameObject enemyBullet = BulletPool.Instance.GetInstance(homing);
            enemyBullet.GetComponent <BulletObject>().Force = Force.Enemy;
            enemyBullet.transform.position = this.transform.position + Vector3.up * 1.8f;
            GameObject effect = enemyBullet.transform.GetChild(0).gameObject;
            effect.GetComponent <Renderer>().material.SetColor(EmissionColor, homingColor);

            // クールダウン
            yield return(new WaitForSeconds(attackRate));
        }
    }
Exemple #3
0
        static void Main()
        {
            const int Start = 10000;
            const int End   = 10010;

            var ravenServer = new Server
            {
                Services =
                {
                    Bombing.BindService(new PigeonConsumerImpl()),
                    Homing.BindService(new HomingImpl()),
                },
            };

            for (int port = Start; port < End; port++)
            {
                ravenServer.Ports.Add(new ServerPort("localhost", port, ServerCredentials.Insecure));
                Console.WriteLine($"GrpcRaven server listening on port {port}");
            }

            ravenServer.Start();

            Console.WriteLine("Press any key to stop the server...");
            Console.ReadKey();

            ravenServer.ShutdownAsync().Wait();
        }
Exemple #4
0
    public void Explode(int gems, GemManager.GemType gemType)
    {
        int projectiles = gems * 2;

        for (int i = 0; i < projectiles; i++)
        {
            GameObject b = Instantiate(projectile, transform.position, Quaternion.Euler(0, 0, i * (360f / projectiles)));
            //TODO: usar el nuevo pooling
            b.SetActive(true);

            switch (gemType)
            {
            case GemManager.GemType.Homing:
                Homing h = b.GetComponent <Homing>();
                h.rotSpeed    = 7f;
                h.maxAngleDif = 90f;
                h.enabled     = true;
                b.GetComponentInChildren <SpriteRenderer>().sprite = sprites[0];
                break;

            case GemManager.GemType.Bouncing:
                b.GetComponent <PlayerProjectile>().bounces        = gems;
                b.GetComponentInChildren <SpriteRenderer>().sprite = sprites[1];

                break;
            }
        }
    }
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Space))
     {
         _bullet = BulletPool.GetInstance(new Homing());
         Homing homing = _bullet.GetComponent <BulletObject>().bulletclass as Homing;
         homing.Velocity       = 6f;
         homing.HomingStrength = 1f;
         homing.Target         = GameObject.Find("Target");
         homing.AttackPoint    = 10;
         homing.Direction      = new Vector3(0, 0, 1);
         particleColor         = _homingColor;
         Generate();
     }
     else if (Input.GetKeyDown(KeyCode.LeftShift))
     {
         _bullet = BulletPool.GetInstance(new Straight());
         Straight straight = _bullet.GetComponent <BulletObject>().bulletclass as Straight;
         straight.Velocity    = 12f + Random.Range(-4f, 4f);
         straight.AttackPoint = 10;
         straight.Direction   = Vector3.Normalize(GameObject.Find("Target").transform.position - this.transform.position);
         particleColor        = _straightColor;
         Generate();
     }
 }
Exemple #6
0
        public override void home(Homing homing_state)
        {
            // Always home XY together
            var homing_axes  = homing_state.get_axes();
            var home_xy      = homing_axes.Contains(0) || homing_axes.Contains(1);
            var home_z       = homing_axes.Contains(2);
            var updated_axes = new List <int>();

            if (home_xy)
            {
                updated_axes.Add(0);
                updated_axes.Add(1);
            }
            if (home_z)
            {
                updated_axes.Add(2);
            }
            homing_state.set_axes(updated_axes);
            // Do actual homing
            if (home_xy)
            {
                this._home_axis(homing_state, 0, this.rails[0]);
            }
            if (home_z)
            {
                this._home_axis(homing_state, 2, this.rails[1]);
            }
        }
Exemple #7
0
 public void missileHandler(Homing.missileState ms)
 {
     if (ms == Homing.missileState.miss)
     {
         AddToScore(100);
     }
 }
Exemple #8
0
    void FireSpell()
    {
        spellRecharge = 0;
        Vector2 towards = Util.Convert(target.position) - Util.Convert(transform.position);
        Homing  h       = (Homing)Instantiate(spell, transform.position, transform.rotation);

        h.Fire(towards, target);
    }
    private void SetHoming()
    {
        Homing homing = GetComponent <Homing>() ?? gameObject.AddComponent <Homing>();

        //感知範囲に入るまで起動しない
        homing.enabled = false;
        InitBulletSearchArea(homing);
    }
Exemple #10
0
 public override void home(Homing homing_state)
 {
     // XXX - homing not implemented
     homing_state.set_axes(new List <int> {
         0, 1, 2
     });
     homing_state.set_homed_position((0.0, 0.0, 0.0, null));
 }
Exemple #11
0
 private void EndCharge()
 {
     Homing.TurnSelf(3, Vector3.right, transform);
     SetSpeed(originalspeed);
     //collider.isTrigger = false;
     ResetMaterials();
     ResetTurnSpeed();
     ischarging = false;
 }
    void Start()
    {
        AwakeAudio           = GetComponent <AudioSource> (); // Gets current attached audio source.
        AwakeAudio.panStereo = 0.04f * transform.position.x;  // Pans audio based on x position.

        // Finds the player controller.
        if (playerControllerScript == null)
        {
            playerControllerScript = GameObject.Find("PlayerController_P1").GetComponent <PlayerController>();
        }

        // Sets ricochet variables.
        isRicochet = playerControllerScript.isRicochet;

        if (isRicochet)
        {
            RicochetSound = GameObject.Find("RicochetSound").GetComponent <AudioSource> ();             // Finds ricochet sound.
        }

        // Only count bullets shot after tutorial is complete.
        if (TutorialManager.Instance.tutorialComplete == true)
        {
            GameController.Instance.BulletsShot += 1;
        }

        // Bullet is set to homing but not a helix object.
        if (playerControllerScript.isHoming == true &&
            BulletTypeName != ("Helix"))
        {
            homingScript         = GetComponent <Homing> (); // Get the homing script.
            isHoming             = true;                     // Set homing to true.
            homingScript.enabled = true;                     // Enable the homing script.

            if (BulletSpeedType == SpeedType.Unscaled)
            {
                float unscaledVelocity = BulletSpeedUnscaled *
                                         ((Time.unscaledDeltaTime / Time.timeScale) * FPSCounter.Instance.FramesPerSec);

                // Clamp maximum speed by velocity limits.
                homingScript.speed = Mathf.Clamp(
                    unscaledVelocity,
                    VelocityLimits.x,
                    VelocityLimits.y
                    );
            }
        }

        camShakeScript = GameObject.Find("CamShake").GetComponent <CameraShake> (); // Find the camera shake.
        StartCameraShake();                                                         // Give initial camera shake.
        CheckBulletIteration();                                                     // Checks the iteration of the bullet.
        SetBulletVelocity();
    }
Exemple #13
0
    void OnTriggerEnter2D(Collider2D c)
    {
        // レイヤー名を取得
        string layerName = LayerMask.LayerToName(c.gameObject.layer);

        // レイヤー名がBullet (Player)以外の時は何も行わない
        if (layerName != "Bullet(Player)" && layerName != "BulletHoming(Player)")
        {
            return;
        }

        // PlayerBulletのTransformを取得
        Transform playerBulletTransform = c.transform.parent;

        if (layerName == "Bullet(Player)")
        {
            // Bulletコンポーネントを取得
            Bullet bullet = playerBulletTransform.GetComponent <Bullet>();

            // ヒットポイントを減らす
            hp = hp - bullet.power;
        }
        else if (layerName == "BulletHoming(Player)")
        {
            // Bulletコンポーネントを取得
            Homing homing = playerBulletTransform.GetComponent <Homing>();

            // ヒットポイントを減らす
            hp = hp - homing.power;
        }

        // 弾の削除
        Destroy(c.gameObject);

        // ヒットポイントが0以下であれば
        if (hp <= 0)
        {
            // スコアコンポーネントを取得してポイントを追加
            FindObjectOfType <Score>().AddPoint(point);

            // 爆発
            spaceship.Explosion();

            // エネミーの削除
            Destroy(gameObject);
        }
        else
        {
            spaceship.GetAnimator().SetTrigger("Damage");
        }
    }
Exemple #14
0
    /*public void gatherMissiles()
    {
        foreach (GameObject missile in missileArray)
        {
            deadHomey = missile.GetComponent<Homing> ();
            if(deadHomey.activeMissile == false)
            {
                deadHomey.activeMissile = true;

            }
        }
    }*/
    public int MissileCount()
    {
        int count = 0;
        for (int i = 0; i < missileArraySize; i++)
        {
            homey = missile.GetComponent<Homing> ();
            if(missileArray[i].activeInHierarchy == true)
            {
                count++;
            }
        }

        return count;
    }
Exemple #15
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "Bullet")
     {
         Vector3     v   = new Vector3(transform.position.x, transform.position.y);
         GameObject  obj = Instantiate(_horming, v, Quaternion.identity);
         Homing      h   = obj.GetComponent <Homing>();
         Bullet      b   = collision.gameObject.GetComponent <Bullet>();
         Rigidbody2D rb  = b.GetComponent <Rigidbody2D>();
         h.SetDirection(Utils.GetDegree(rb));
         _player.AddForce(rb.velocity.x, rb.velocity.y);
         b.Vanish();
     }
 }
Exemple #16
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        switch (collision.tag)
        {
        case "Shot": {
            Shot shot = collision.gameObject.GetComponent <Shot>();
            shot.Vanish();
        }
        break;

        case "Horming": {
            Homing homing = collision.gameObject.GetComponent <Homing>();
            homing.Vanish();
        }
        break;
        }
    }
Exemple #17
0
        private static void Start()
        {
            try
            {
                Util.Debug("Hello, world.");

                Arcing.Initialise();
                Curving.Initialise();
                Homing.Initialise();
                Momentum.Initialise();
                Orbital.Initialise();
                Straight.Initialise();
            }
            catch (Exception ex)
            {
                DisplayTextToPlayer(GetLocalPlayer(), 0, 0, ex.Message);
            }
        }
Exemple #18
0
 public void FireMissile()
 {
     for (int i = 0; i < missileArraySize; i++)
     {
         homey = missile.GetComponent<Homing> ();
         if(missileArray[i].activeInHierarchy == false)
         {
             missileArray[i].transform.position = gameObject.transform.position;
             homey = missileArray[i].GetComponent<Homing> ();
             homey.lifetime = missileLifeTime;
             homey.missileVelocity = velocity;
             homey.turn = missileTurn;
             homey.startTime = Time.time;
             homey.hit = false;
             missileArray[i].SetActive(true);
             return;
         }
     }
 }
Exemple #19
0
    private float timeleft; // Left time for current interval

    #endregion Fields

    #region Methods

    public void missileHandler(Homing.missileState ms)
    {
        print("getting missile event");
        if (ms == Homing.missileState.hit)
        {
            //healthAnimator = HealthBar.GetComponent<Animator> ();
            print("healthbar = " + healthAnimator);
            int newHealth = healthAnimator.GetInteger("healthBarAmount");
            newHealth--;
            if(newHealth > 0)
            {
                healthAnimator.SetInteger("healthBarAmount", newHealth);
            }

            if(newHealth == 0)
            {
                DontDestroyOnLoad(gameObject);
                Application.LoadLevel("GameOver");
            }
        }
    }
Exemple #20
0
    void ShootSquirt()
    {
        //Rigidbody2D SquirtClone;
        GameObject SquirtClone;
        //Rigidbody2D SquirtCloneRb2d;

        float SquirtCloneForce            = 120f;
        float ThiefToGhostLerpDistancePct = 0.2f;

        //get intrapolated distance from thief to player
        Vector3 ThiefToGhostLerp = Vector3.Lerp(transform.position, GhostGameObject.transform.position, ThiefToGhostLerpDistancePct / ((transform.position - GhostGameObject.transform.position).magnitude));

        //print("PointToPlayer-> X, Y : " + ThiefToGhostLerp.x + "," + ThiefToGhostLerp.y);
        print("Squirt Shot!");

        //*calculate squirt rotation to point to ghost
        Quaternion SquirtRotationInDegrees_z = Quaternion.Euler(0f, 0f, GetAngleBetweenVectors(GhostGameObject.transform.position, transform.position) - 90);

        //*instantiate squirt in position and rotated
        SquirtClone = Instantiate(squirt, ThiefToGhostLerp, SquirtRotationInDegrees_z) as GameObject;
        //SquirtCloneRb2d = Instantiate(squirt, ThiefToGhostLerp, SquirtRotationInDegrees_z) as Rigidbody2D;

        Homing SquirtHomingScript = SquirtClone.GetComponent <Homing>();

        SquirtHomingScript.Target = GhostGameObject;

        //*calculate normal vector from squirt to ghost
        Vector3 SquirtCloneToGhostNormal = (GhostGameObject.transform.position - SquirtClone.transform.position).normalized;
        //Vector3 SquirtCloneToGhostNormal = (GhostGameObject.transform.position - SquirtCloneRb2d.transform.position).normalized;

        //*apply force
        //SquirtClone.AddForce(SquirtCloneToGhostNormal * SquirtCloneForce);
        //SquirtCloneRb2d.AddForce(SquirtCloneToGhostNormal * SquirtCloneForce);

        //*pre shooting
        //Rigidbody2D ghostRb2d = GhostGameObject.GetComponent<Rigidbody2D>();
        //Vector2 ghostVelocityV2 = ghostRb2d.velocity.normalized;
        //Vector3 ghostVelocityV3 = new Vector3(ghostVelocityV2.x, ghostVelocityV2.y, 0);
        //SquirtClone.AddForce((SquirtCloneToGhostNormal + ghostVelocityV3) * SquirtCloneForce);
    }
Exemple #21
0
        void _home_axis(Homing homing_state, int axis, PrinterRail rail)
        {
            // Determine movement
            var _tup_1       = rail.get_range();
            var position_min = _tup_1.X;
            var position_max = _tup_1.Y;
            var hi           = rail.get_homing_info();
            var homepos      = new List <double?> {
                null, null, null, null
            };

            homepos[axis] = hi.position_endstop;
            if (axis == 0)
            {
                homepos[1] = 0.0;
            }
            var forcepos = homepos.ToList();

            if (hi.positive_dir ?? false)
            {
                forcepos[axis] -= hi.position_endstop - position_min;
            }
            else
            {
                forcepos[axis] += position_max - hi.position_endstop;
            }
            // Perform homing
            double?limit_speed = null;

            if (axis == 2)
            {
                limit_speed = this.max_z_velocity;
            }
            homing_state.home_rails(new List <PrinterRail> {
                rail
            },
                                    (forcepos[0], forcepos[1], forcepos[2], forcepos[3]),
                                    (homepos[0], homepos[1], homepos[2], homepos[3]),
                                    limit_speed);
        }
Exemple #22
0
 public override void home(Homing homing_state)
 {
     // Each axis is homed independently and in order
     foreach (var axis in homing_state.get_axes())
     {
         if (axis == this.dual_carriage_axis)
         {
             var dc1  = this.dual_carriage_rails[0];
             var dc2  = this.dual_carriage_rails[1];
             var altc = this.rails[axis] == dc2;
             this._activate_carriage(0);
             this._home_axis(homing_state, axis, dc1);
             this._activate_carriage(1);
             this._home_axis(homing_state, axis, dc2);
             this._activate_carriage(altc ? 1 : 0);
         }
         else
         {
             this._home_axis(homing_state, axis, this.rails[axis]);
         }
     }
 }
Exemple #23
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Fire1") && !use_health)
        {
            Debug.Log("Fired");
            GameObject Clone;

            Clone            = (Instantiate(skull, transform.position, transform.rotation)) as GameObject;
            settingsH        = Clone.GetComponent <Homing>();
            settingsH.time   = time;
            settingsH.target = target;

            settingsL        = Clone.GetComponent <Look>();
            settingsL.target = target;
            settingsL.range  = range;
        }

        //else if(use_health )
        //{

        //}
    }
Exemple #24
0
    void openTarget()
    {
        mousePos   = Input.mousePosition;
        mousePos.z = 10f;
        mousePos   = mainCamera.ScreenToWorldPoint(mousePos);

        RaycastHit[] hits = Physics.BoxCastAll(mousePos, Vector3.one * homingRange, (mousePos - Camera.main.transform.position), Quaternion.identity, 100f, LayerMask.GetMask("Default"));


        if (homingShot == true)
        {
            foreach (RaycastHit hit in hits)
            {
                if (laserGauge >= 20)
                {
                    Debug.Log(hit.collider.gameObject.name);
                    laserGauge -= 20;

                    //ここでホーミングを打つ(つまり単発を高速レートで打つ感じ)
                    //hit.collider.gameObjectでぶつかったオブジェクトのことを指す
                    Homing homing = new Homing();
                    homing.Velocity       = 10f; // 仮の値
                    homing.HomingStrength = 10f; // 仮の値
                    homing.Direction      = transform.forward;
                    homing.Target         = hit.collider.gameObject;
                    GameObject bullet = bulletPool.GetInstance(homing);
                    GameObject effect = bullet.transform.GetChild(0).gameObject;
                    effect.GetComponent <Renderer>().material.SetColor("_EmissionColor", _homingColor);
                    bullet.GetComponent <BulletObject>().Force = Force.Player;
                    bullet.transform.position = this.transform.position;
                }
            }

            homingRange = 1f;
            homingShot  = false;

            Debug.Log(laserGauge);
        }
    }
Exemple #25
0
    private void Update()
    {
        if (target.activeSelf)
        {
            cannon.transform.LookAt(target.transform.position);

            if (Vector3.Distance(target.transform.position, transform.position) <= range)
            {
                if (fireTimer >= fireRate)
                {
                    fireTimer = 0.0f;

                    Homing homing = Instantiate(bullet, cannon.position, cannon.rotation).GetComponent <Homing>();
                    homing.SetTarget(target.gameObject);
                }
                fireTimer += Time.deltaTime;

                return;
            }
            fireTimer = 0.0f;
        }
    }
Exemple #26
0
 public override void home(Homing homing_state)
 {
     // Each axis is homed independently and in order
     foreach (var axis in homing_state.get_axes())
     {
         var rail = this.rails[axis];
         // Determine movement
         var _tup_1       = rail.get_range();
         var position_min = _tup_1.X;
         var position_max = _tup_1.Y;
         var hi           = rail.get_homing_info();
         var homepos      = new List <double?> {
             null, null, null, null
         };
         homepos[axis] = hi.position_endstop;
         var forcepos = homepos.ToList();
         if ((bool)hi.positive_dir)
         {
             forcepos[axis] -= 1.5 * (hi.position_endstop - position_min);
         }
         else
         {
             forcepos[axis] += 1.5 * (position_max - hi.position_endstop);
         }
         // Perform homing
         double?limit_speed = null;
         if (axis == 2)
         {
             limit_speed = this.max_z_velocity;
         }
         homing_state.home_rails(new List <PrinterRail> {
             rail
         },
                                 (forcepos[0], forcepos[1], forcepos[2], forcepos[3]),
                                 (homepos[0], homepos[1], homepos[2], homepos[3]),
                                 limit_speed);
     }
 }
        public void cmd_G28(Dictionary <string, object> parameters)
        {
            // Move to origin
            var axes = new List <int>();

            foreach (var axis in "XYZ")
            {
                if (parameters.ContainsKey(axis.ToString()))
                {
                    axes.Add(axis2pos[axis.ToString()]);
                }
            }
            if (axes.Count == 0)
            {
                axes.Add(0);
                axes.Add(1);
                axes.Add(2);
            }
            var homing_state = new Homing(this.printer);

            if (this.is_fileinput)
            {
                homing_state.set_no_verify_retract();
            }
            try
            {
                homing_state.home_axes(axes);
            }
            catch (Exception ex)
            {
                throw new GCodeException("", ex);
            }
            foreach (var axis in homing_state.get_axes())
            {
                this.base_position.Set(axis, this.homing_position.Get(axis));
            }
            this.reset_last_position();
        }
    public void Shoot(GameObject projectile, Transform target)
    {
        if (beforeNextShot > 0)
        {
            return;
        }
        GameObject newProj = Instantiate(projectile, transform.position + transform.forward, Quaternion.Euler(0, transform.rotation.eulerAngles.y, 0)) as GameObject;
        Vector3    heading = target.position - transform.position;

        heading.Normalize();

        LaserWarhead warhead = newProj.GetComponent <LaserWarhead>();
        Homing       homing  = newProj.GetComponent <Homing>();

        newProj.GetComponent <Rigidbody>().AddForce(heading * power, ForceMode.VelocityChange);

        if (warhead && homing)
        {
            warhead.Target = target;
            homing.Target  = target;
        }

        beforeNextShot = rateOfFire;
    }
    /*public void MoveByZ(tiltListener.direction newDirection)
    {

        if (newDirection == tiltListener.direction.up)
        {

                if (changeZState(1))
                {
                    transform.Translate(0f, 5f, -5f);
                    transform.localScale.Scale(new Vector3(transform.localScale.x, transform.localScale.y, transform.localScale.z + 1f));

                    zpos++;
                }

        } else if (newDirection == tiltListener.direction.down)
        {
                if (changeZState(-1))
                {
                    transform.Translate(0f, -5f, 5f);
                transform.localScale.Scale(new Vector3(transform.localScale.x, transform.localScale.y, transform.localScale.z - 1f));
                    zpos--;
                }
        }
    }*/
    /*public bool changeZState(int i)
    {
        bool success = false;
        if (i == 1)
        {
            if(currentZState == zState.far)
            {
                currentZState = zState.center;
                success = true;
            }
            else if(currentZState == zState.center)
            {
                currentZState = zState.close;
                success = true;
            }
            else if(currentZState == zState.close)
            {
                success = false;
            }
        }

        else if (i == -1)
        {
            if(currentZState == zState.close)
            {
                currentZState = zState.center;
                success = true;
            }
            else if(currentZState == zState.center)
            {
                currentZState = zState.far;
                success = true;
            }
            else if(currentZState == zState.far)
            {
                success = false;
            }
        }

        return success;

    }*/
    public void missileHandler(Homing.missileState ms)
    {
        if (ms == Homing.missileState.hit)
        {

        }
    }
Exemple #30
0
 void SetHomingModeNoRaycast()
 {
     homing = Homing.NoRaycast;
 }
Exemple #31
0
 void SetHomingModeWithRaycast()
 {
     homing = Homing.WithRaycast;
 }
Exemple #32
0
 void SetHomingModeOff()
 {
     homing = Homing.Off;
 }
Exemple #33
0
 public abstract void home(Homing homing_state);
Exemple #34
0
 public override void AddSpellModifier(GameObject go)
 {
     Homing homing = go.AddComponent <Homing>();
 }
Exemple #35
0
    public float Damage(float damage)
    {
        float actualDamage = 0;

        GetComponent <Rigidbody2D>().velocity = Vector3.zero;

        dmgOpt = (int)(dfc / 50);
        if (dmgOpt < 1)
        {
            dmgOpt = 1;
        }
        else if (dmgOpt > 90)
        {
            dmgOpt = 90;
        }
        damage = Mathf.Floor(damage * (100 - dmgOpt) / 100);
        if (damage <= 1)
        {
            damage = 1;
        }

        //Damage
        GameObject damageObj = Instantiate(Resources.Load(damagePath)) as GameObject;

        damageObj.transform.SetParent(canvas.transform);
        damageObj.GetComponent <Text> ().text = "-" + damage;
        damageObj.transform.position          = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 5, 0);
        damageObj.transform.localScale        = new Vector3(0.08f, 0.08f, 0);

        if (preAttackObj != attackObj)
        {
            callHelpFlg = false;
        }

        if (!callHelpFlg)
        {
            if (taisyo || name == "shiro")
            {
                //Call My help
                preAttackObj = attackObj;
                callHelpFlg  = true;
                foreach (GameObject obs in  GameObject.FindGameObjectsWithTag("Enemy"))
                {
                    if (!obs.GetComponent <EnemyHP>().taisyo&& obs.name != "shiro")
                    {
                        if (obs.GetComponent <Homing> ())
                        {
                            Homing script = obs.GetComponent <Homing> ();
                            script.helpTaisyoShiroFlg = true;
                            script.nearObj            = attackObj;
                            script.AIType             = 2;
                            if (script.backShiroObj)
                            {
                                //toride
                                ShiroSearch shiroScript = script.backShiroObj.GetComponent <ShiroSearch>();
                                HelpSyutsujinFromToride(script.backShiroObj, shiroScript.busyoObjList, shiroScript.AITypeList, shiroScript.busyoObjSize, shiroScript.outBusyoObjList);
                            }
                        }
                        else if (obs.GetComponent <HomingLong> ())
                        {
                            HomingLong script = obs.GetComponent <HomingLong> ();
                            script.helpTaisyoShiroFlg = true;
                            script.nearObj            = attackObj;
                            script.AIType             = 2;

                            if (script.backShiroFlg)
                            {
                                //toride
                                ShiroSearch shiroScript = script.backShiroObj.GetComponent <ShiroSearch>();
                                HelpSyutsujinFromToride(script.backShiroObj, shiroScript.busyoObjList, shiroScript.AITypeList, shiroScript.busyoObjSize, shiroScript.outBusyoObjList);
                            }
                        }
                    }
                }
            }
        }

        if (childQty <= 0)
        {
            life        -= damage;      //兵力減らす
            actualDamage = damage;
        }
        else
        {
            actualDamage = childHPTmp;
            childHPTmp  -= damage;
            if (childHPTmp <= 0)
            {
                //dead child
                foreach (Transform child in transform)
                {
                    if (child.tag == "EnemyChild")
                    {
                        child.transform.DetachChildren();
                        Destroy(child.gameObject);
                        break;
                    }
                }

                childQty  -= 1;
                childHPTmp = childHP;
            }
        }

        return(actualDamage);
    }