/// <summary> /// プレイヤーの攻撃を生成します。 /// </summary> /// <param name="_arrayNumber"></param> /// <param name="_attackType"></param> /// <param name="_enemyTargetIndex"></param> public void CreatePlayerAttack(int _arrayNumber, MotionManager.MotionSkillType _attackType, int _enemyTargetIndex) { if (CheckOutRangeArrayNumberEnemy(_enemyTargetIndex, "CreatePlayerAttack _enemyTargetIndex")) { return; } //TODO 後で追加らしい }
/// <summary> /// /// </summary> /// <param name="_type">攻撃タイプ</param> /// <param name="_speed">速度</param> /// <param name="_scale">サイズ</param> /// <param name="_damage">ダメージ</param> public EffectData( MotionManager.MotionSkillType _type, float _speed, int _damage ) { skillType = _type; speed = _speed; damage = _damage; }
/// <summary> /// /// </summary> /// <param name="_type">攻撃タイプ</param> /// <param name="_speed">速度</param> /// <param name="_scale">サイズ</param> /// <param name="_damage">ダメージ</param> public EffectData( MotionManager.MotionSkillType _type , float _speed, int _damage ) { skillType = _type; speed = _speed; damage = _damage; }
/// <summary> /// ヒットエフェクトを再生する。 /// </summary> /// <param name="hitSkilType"></param> /// <param name="position"></param> public void EffectPlay(MotionManager.MotionSkillType hitSkilType, Vector3 position) { if (hitSkilType == MotionManager.MotionSkillType.STRENGTH) { EffectPlay(strengthHitEffectList, position, ref strengthPlayIndex); } else if (hitSkilType == MotionManager.MotionSkillType.WEAK) { EffectPlay(weakHitEffectList, position, ref weakPlayIndex); } }
/// <summary> /// 初期化 /// </summary> public void Init(MotionManager.MotionSkillType attackType,int damage, float speed) { // エフェクトがどの攻撃タイプか情報を保存 type = attackType; // ダメージ量をオブジェクトに保存 takeDamage = damage; transform.position = SequenceManager.Instance.ARCamera.transform.position; var direction = (GameManager.Instance.Enemy.transform.position - transform.position).normalized; cashRigidBody.velocity = direction * speed; }
/// <summary> /// 初期化 /// </summary> public void Init(MotionManager.MotionSkillType attackType, int damage, float speed) { // エフェクトがどの攻撃タイプか情報を保存 type = attackType; // ダメージ量をオブジェクトに保存 takeDamage = damage; transform.position = SequenceManager.Instance.ARCamera.transform.position; var direction = (GameManager.Instance.Enemy.transform.position - transform.position).normalized; cashRigidBody.velocity = direction * speed; }
/// <summary> /// 攻撃のエフェクトを再生 /// </summary> /// <param name="effectList"></param> /// <param name="skillType"></param> /// <param name="index"></param> void EffectPlay(List <EffectMover> effectList, MotionManager.MotionSkillType skillType, ref int index) { effectList[index].gameObject.SetActive(true); effectList[index].Init( db.dataList[(int)skillType].skillType, db.dataList[(int)skillType].damage, db.dataList[(int)skillType].speed ); index++; if (effectList.Count <= index) { index = 0; } }
/// <summary> /// どの攻撃タイプのエフェクトを生成するか確認 /// </summary> /// <param name="skillType"></param> void CheckType(MotionManager.MotionSkillType skillType) { /// <summary> /// 攻撃タイプを判別 /// </summary> switch (skillType) { case MotionManager.MotionSkillType.STRENGTH: EffectPlay(strengthEffectList, skillType, ref strengthPlayIndex); SEPlayer.Instance.Play("PlayerStrengthAttack"); break; case MotionManager.MotionSkillType.WEAK: EffectPlay(weakEffectList, skillType, ref weakPlayIndex); SEPlayer.Instance.Play("PlayerWeakAttack"); break; default: break; } }
/// <summary> /// プレイヤーの挙動を受け取り攻撃タイプを判別 /// </summary> /// <param name="attackType">動作から受け取った行動ID</param> public void OnObject(MotionManager.MotionSkillType attackType) { // エフェクトオブジェクトをアクティブ化 gameObject.SetActive(true); // エフェクトがどの攻撃タイプか情報を保存 type = attackType; // エフェクトのターゲットを設定 targetPosition = new Vector3( player.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z); // 動きから受け取ったタイプからテクスチャなどをオブジェクトに張り付ける switch (attackType) { case MotionManager.MotionSkillType.VERTICAL_UP_DOWN: if (itweenCheck != false) break; attackSpriteRenderer.sprite = upDownAttackSprite; Move(); break; case MotionManager.MotionSkillType.VERTICAL_DOWN_UP: if (itweenCheck != false) break; attackSpriteRenderer.sprite = downUpAttackSprite; Move(); break; case MotionManager.MotionSkillType.HORIZONTAL_LEFT_RIGHT: if (itweenCheck != false) break; attackSpriteRenderer.sprite = leftRightAttackSprite; Move(); break; case MotionManager.MotionSkillType.HORIZONTAL_RIGHT_LEFT: if (itweenCheck != false) break; attackSpriteRenderer.sprite = rightLeftAttackSprite; Move(); break; } // ITweenが再生中のフラグを立てる itweenCheck = true; }
/// <summary> /// エネミーが攻撃に当たった時用の関数 /// </summary> /// <param name="_playerAttackArrayNumber"></param> /// <param name="_damage"></param> public void SendEnemyHit(MotionManager.MotionSkillType _playerAttackType, int _damage) { int enemyIndex = -1; for (int i = 0; i < MaxEnemyNum; i++) { //現在アクティブなエネミーを検索 if (enemyDataArray[i].IsActive == true) { enemyIndex = i; } } // FIX 判定がおかしかった。 if (CheckOutRangeArrayNumberEnemy(enemyIndex, "SendEnemyHit")) { //return; } enemyDataArray[enemyIndex].HP -= _damage; enemyDataArray[enemyIndex].HitAttackType = _playerAttackType; enemyDataArray[enemyIndex].IsHit = true; }
/// <summary> /// Update メソッドが最初に呼び出される前のフレームで呼び出されます /// </summary> void Start() { // エフェクト用のテクスチャを貼るコンポーネントを取得 attackSpriteRenderer = gameObject.GetComponent<SpriteRenderer>(); // プレイヤーの位置までいったん移動 gameObject.transform.position = player.transform.position; // オブジェクトの非アクティブ化 gameObject.SetActive(false); // ITween用のフラグ初期化 itweenCheck = false; // 攻撃タイプの初期化 type = MotionManager.MotionSkillType.NONE; }