override protected void CounterEndAction(AttackCounterEffecter val)
 {
     if (val.TargetEnemy != null)
     {
         val.TargetEnemy.Damage(1);
     }
 }
    public void CounterAttackEntry(AttackCounterEffecter val)
    {
        //アニメーションカーブを代入
        val.zAxisPos = zAxisPos;

        val.xyAxisPos = xyAxisPos;

        val.upPos = upPos;

        ////着弾地点を設定
        SetEndPos(val);

        //リストに追加
        CounterAttacks.Add(val);
    }
	public void CounterAttackEntry(AttackCounterEffecter val)
	{
		//アニメーションカーブを代入
		val .zAxisPos = zAxisPos;

		val .xyAxisPos = xyAxisPos;

		val .upPos = upPos;

		////着弾地点を設定
		SetEndPos( val );

		//リストに追加
		CounterAttacks .Add( val );
	}
    override protected void SetEndPos(AttackCounterEffecter val)
    {
        //攻撃できる前の敵を探す
        Enemy enemy = topEnemyManager.SpawnEnemy;

        if (enemy == null || enemy.IsVirtualDeath)
        {
            //敵がいない場合は奥に飛ばす
            val.EndTrans = NoTargetCAPoint;
        }
        else
        {
            //弱点を終点に設定
            val.EndTrans = enemy.WeakPoint;
            //敵をターゲットに設定
            val.TargetEnemy = enemy;

            enemy.VirtualDamage(1);
        }
    }
    override protected void SetEndPos(AttackCounterEffecter val)
    {
        //攻撃できる前の敵を探す
        Enemy enemy = enemyLineManager.GetCanAttackFrontEnemy();

        if (enemy == null)
        {
            //敵がいない場合は奥に飛ばす
            val.EndTrans = NoTargetCAPoint;
        }
        else
        {
            //弱点を終点に設定
            val.EndTrans = enemy.WeakPoint;
            //敵をターゲットに設定
            val.TargetEnemy = enemy;

            enemy.VirtualDamage(1);
        }
    }
	override protected void SetEndPos( AttackCounterEffecter val )
	{
		//攻撃できる前の敵を探す
		Enemy enemy = topEnemyManager .SpawnEnemy;
		if (enemy == null || enemy.IsVirtualDeath)
		{
			//敵がいない場合は奥に飛ばす
			val .EndTrans = NoTargetCAPoint;

		}
		else
		{
			//弱点を終点に設定
			val .EndTrans = enemy .WeakPoint;
			//敵をターゲットに設定
			val .TargetEnemy = enemy;

			enemy .VirtualDamage( 1 );
		}
	}
	override protected void SetEndPos( AttackCounterEffecter val )
	{
		//攻撃できる前の敵を探す
		Enemy enemy = enemyLineManager .GetCanAttackFrontEnemy();
		if(enemy == null)
		{
			//敵がいない場合は奥に飛ばす
			val .EndTrans = NoTargetCAPoint;
		
		}
		else
		{
			//弱点を終点に設定
			val .EndTrans = enemy .WeakPoint;
			//敵をターゲットに設定
			val .TargetEnemy = enemy;

			enemy .VirtualDamage( 1 );
		}
	}
 protected void Update()
 {
     //foreach (int index in CounterAttacks)
     for (int i = 0; i < CounterAttacks.Count; i++)
     {
         AttackCounterEffecter counterAttack = CounterAttacks[i] as AttackCounterEffecter;
         if (counterAttack == null)
         {
             CounterAttacks.RemoveAt(i);
             i--;
             continue;
         }
         if (counterAttack.IsEnd)
         {
             //終了したカウンター攻撃を精算する
             CounterEndAction(counterAttack);
             counterAttack.EnableAutoDestruct();
             CounterAttacks.RemoveAt(i);
             i--;
         }
     }
 }
	override protected void CounterEndAction( AttackCounterEffecter val )
	{
		//地面が揺れる
		enemyStanManager .Stan();
	}
Esempio n. 10
0
    void New_Update()
    {
        if (bulletResultManager.PulseResultDataCount == 0)
        {
            return;
        }


        //切った方向から呼び出すマネージャーを設定
        Vector2 swordDir   = sword.SwordDirection;
        int     UseManager = -1;
        float   MaxDot     = -float.MaxValue;

        //基準となる軸から何度ずれているかで決定する
        Vector2 StandardAxis = new Vector2(-1.0f, 1.0f);

        StandardAxis.Normalize();

        float MinDot = float.MaxValue;


        Vector3 StartAxis = new Vector3(swordDir.x, swordDir.y, .0f);

        for (int i = 0; i < bulletResultManager.PulseResultDataCount; i++)
        {
            if (bulletResultManager.GetPulseResultData(i).Miss)
            {
                return;
            }
            if (!bulletResultManager.GetPulseResultData(i).IsCanCounterEmit)
            {
                return;
            }
            //マーカーのビューポート位置を取得
            Vector2 EnemyViewport  = new Vector2();
            Vector2 MarkerViewport = Camera.main.WorldToViewportPoint(bulletResultManager.GetPulseResultData(i).MarkerWorldPos);

            //一番右隣で近い軸を探す
            for (int j = 0; j < JudgeAxis.Length; j++)
            {
                //敵のビューポート位置を取得
                if (!Managers[j].GetEnemyViewPort(ref EnemyViewport))
                {
                    continue;
                }
                Vector2 Length = EnemyViewport - MarkerViewport;
                Length.Normalize();

                float dot = Vector2.Dot(Length, swordDir);
                if (dot < JudgeDot)
                {
                    continue;
                }
                if (MaxDot < dot)
                {
                    MaxDot     = dot;
                    UseManager = j;
                }
            }
            //位置と方向からカウンターアタックを作成
            //初期位置がStartPosになる
            Vector3 StartPos = bulletResultManager.GetPulseResultData(i).WorldPos;

            float NearLimit = Camera.main.transform.position.z + Camera.main.nearClipPlane + 0.1f;

            if (NearLimit > StartPos.z)
            {
                StartPos.z = NearLimit;
            }
            //軌跡が見えなくなるのを防止

            //試しに弾き返しを凍結
            if (UseManager == -1)
            {
                return;
            }

            GameObject            emitobj       = Instantiate(CounterAttackData, StartPos, Quaternion.identity) as GameObject;
            AttackCounterEffecter CounterAttack = emitobj.GetComponent <AttackCounterEffecter>();

            CounterAttack.StartAxis = StartAxis;

            CounterAttack.MaxTime = staticScript.rhythmManager.OnTempoTime;

            bulletResultManager.GetPulseResultData(i).IsCounterEmited = true;


            Managers[UseManager].CounterAttackEntry(CounterAttack);
        }
    }
Esempio n. 11
0
    void Old_Update()
    {
        if (bulletResultManager.PulseResultDataCount == 0)
        {
            return;
        }


        //切った方向から呼び出すマネージャーを設定
        Vector2 swordDir   = sword.SwordDirection;
        int     UseManager = -1;
        float   MaxDot     = -float.MaxValue;

        //基準となる軸から何度ずれているかで決定する
        Vector2 StandardAxis = new Vector2(-1.0f, 1.0f);

        StandardAxis.Normalize();

        //一番右隣で近い軸を探す
        for (int i = 0; i < JudgeAxis.Length; i++)
        {
            Vector2 Axis = JudgeAxis[i].normalized;
            if (Axis.x * swordDir.y - Axis.y * swordDir.x > 0.0f)
            {
                continue;
            }

            float dot = Vector2.Dot(Axis, swordDir);
            if (MaxDot < dot)
            {
                MaxDot     = dot;
                UseManager = i;
            }
        }


        Vector3 StartAxis = new Vector3(swordDir.x, swordDir.y, .0f);

        for (int i = 0; i < bulletResultManager.PulseResultDataCount; i++)
        {
            if (bulletResultManager.GetPulseResultData(i).Miss)
            {
                return;
            }

            //位置と方向からカウンターアタックを作成
            //初期位置がStartPosになる
            Vector3 StartPos = bulletResultManager.GetPulseResultData(i).WorldPos;

            float NearLimit = Camera.main.transform.position.z + Camera.main.nearClipPlane + 0.1f;

            if (NearLimit > StartPos.z)
            {
                StartPos.z = NearLimit;
            }
            //軌跡が見えなくなるのを防止

            GameObject            emitobj       = Instantiate(CounterAttackData, StartPos, Quaternion.identity) as GameObject;
            AttackCounterEffecter CounterAttack = emitobj.GetComponent <AttackCounterEffecter>();

            CounterAttack.StartAxis = StartAxis;
            Managers[UseManager].CounterAttackEntry(CounterAttack);
        }
    }
Esempio n. 12
0
 override protected void CounterEndAction(AttackCounterEffecter val)
 {
     //地面が揺れる
     enemyStanManager.Stan();
 }
 abstract protected void CounterEndAction(AttackCounterEffecter val);
	override protected void SetEndPos( AttackCounterEffecter val )
	{
		val .EndTrans = CAPoint;
	}
	abstract protected void SetEndPos( AttackCounterEffecter val );
	abstract protected void CounterEndAction( AttackCounterEffecter val );
 abstract protected void SetEndPos(AttackCounterEffecter val);
	override protected void CounterEndAction( AttackCounterEffecter val )
	{
		if(val.TargetEnemy != null)
			val .TargetEnemy .Damage( 1 );
	}
Esempio n. 19
0
 override protected void SetEndPos(AttackCounterEffecter val)
 {
     val.EndTrans = CAPoint;
 }