예제 #1
0
        /// フレーム処理
        protected override bool DoFrame()
        {
            /// 壊れる
            if (brokenFlg == true)
            {
                /// 草を刈る
                if (fixTypeId == Data.FixTypeId.Fix03)
                {
                    EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff11, BasePos);
                }

                /// 木製の備品の破壊
                else
                {
                    EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff09, BasePos);
                    AppSound.GetInstance().PlaySeCamDis(AppSound.SeId.ObjBreak, BasePos);
                }

                Enable = false;
                return(false);
            }

            objFix.Frame();
            return(true);
        }
예제 #2
0
        /// 破棄
        public override void Term()
        {
            DoTerm();

            if (moveCollMgr != null)
            {
                moveCollMgr.Term();
            }
            if (unitCmnPlay != null)
            {
                unitCmnPlay.Term();
            }
            if (EventCntr != null)
            {
                EventCntr.Clear();
                EventCntr.Term();
            }
            if (interfereCntr != null)
            {
                interfereCntr.Term();
            }

            interfereCntr = null;
            EventCntr     = null;
            moveCollMgr   = null;
            unitCmnPlay   = null;
            dmgTrgObj     = null;
        }
예제 #3
0
        /// 終了
        public override void End()
        {
            DoEnd();

            EventCntr.Clear();
            Enable = false;
        }
예제 #4
0
        /// 死亡
        private bool statePlayDead()
        {
            Vector3 effPos = new Vector3(0, 0, 0);

            switch (statePlayTask)
            {
            /// 終了待ち
            case 0:
                Common.VectorUtil.Set(ref effPos, objCh.BodyPos.X, objCh.BodyPos.Y, objCh.BodyPos.Z);

                EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff05, effPos);

                AppSound.GetInstance().PlaySeCamDis(AppSound.SeId.ObjBreak, BasePos);

                deadCnt = 0;
                statePlayTask++;
                break;

            /// エフェクト余韻
            case 1:
                deadCnt++;
                if (deadCnt >= 25)
                {
                    Enable = false;
                }
                break;
            }

            return(true);
        }
예제 #5
0
        /// 破棄
        public override void Term()
        {
            DoTerm();

            if (moveCollMgr != null)
            {
                moveCollMgr.Term();
            }
            if (calCollMove != null)
            {
                calCollMove.Term();
            }
            if (interfereCntr != null)
            {
                interfereCntr.Term();
            }
            if (EventCntr != null)
            {
                EventCntr.Clear();
                EventCntr.Term();
            }

            interfereCntr = null;
            EventCntr     = null;
            moveCollMgr   = null;
            calCollMove   = null;
        }
예제 #6
0
        /// 終了
        public override void End()
        {
            DoEnd();
            unitCmnPlay.End();

            EventCntr.Clear();

            dmgTrgObj = null;
            Enable    = false;
        }
예제 #7
0
        /// 開始
        public override bool Start()
        {
            stateIsPlayId = StateId.Stand;
            SetStateStand();

            unitCmnPlay.Start(this, interfereCntr, moveCollMgr);
            EventCntr.Clear();

            Enable = DoStart();
            return(Enable);
        }
예제 #8
0
        /// 破棄
        public override void Term()
        {
            DoTerm();

            if (unitCmnPlay != null)
            {
                unitCmnPlay.Term();
            }
            if (EventCntr != null)
            {
                EventCntr.Term();
            }

            EventCntr   = null;
            unitCmnPlay = null;
        }
예제 #9
0
        /// フレーム処理
        public override bool DoFrame()
        {
            movePos.X = BasePos.X + BaseMtx.M31 * 1.0f;
            movePos.Y = BasePos.Y + BaseMtx.M32 * 1.0f;
            movePos.Z = BasePos.Z + BaseMtx.M33 * 1.0f;

            moveLife--;

            // 移動寿命
            if (moveLife <= 0)
            {
                EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff08, BasePos);
                this.Enable = false;
            }

            /// 移動
            else if (calCollMove.Check(moveCollMgr, movePos) == true)
            {
                EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff08, BasePos);

                if (moveCollMgr.TrgContainer.GetEntryObjParent(0).EventCntr != null)
                {
                    moveCollMgr.TrgContainer.GetEntryObjParent(0).EventCntr.Add(ActorEventId.Damage, (int)Data.AttackTypeId.Magic, null);
                    moveCollMgr.TrgContainer.GetEntryObjParent(0).EventCntr.Add(ActorEventId.LookTrg, 0, BasePos);
                }

                AppSound.GetInstance().PlaySeCamDis(AppSound.SeId.EnSpelHit, BasePos);
                this.Enable = false;
            }
            else
            {
                BasePos = calCollMove.NextPos;
            }

            Common.MatrixUtil.SetTranslate(ref BaseMtx, BasePos);
            objBullet.SetMatrix(BaseMtx);

            objBullet.Frame();
            return(true);
        }
예제 #10
0
        /// ダメージ演出
        private void setDamageEff()
        {
            /// 攻撃対象の方向へ向く
            if (dmgTrgObj != null)
            {
                Vector4 x   = new Vector4(0, 0, 0, 0);
                Vector4 y   = new Vector4(0, 0, 0, 0);
                Vector4 z   = new Vector4(0, 0, 0, 0);
                Vector4 w   = new Vector4(0, 0, 0, 0);
                Matrix4 mtx = new Matrix4(x, y, z, w);
                Vector3 vec = new Vector3((dmgTrgObj.Mtx.M41 - objCh.Mtx.M41), 0.0f, (dmgTrgObj.Mtx.M43 - objCh.Mtx.M43));
                Common.MatrixUtil.LookTrgVec(ref mtx, vec);
                Common.MatrixUtil.SetTranslate(ref mtx, BasePos);
                this.SetPlace(mtx);
            }

            /// エフェクト表示
            Vector3 effPos = new Vector3(objCh.Mtx.M41 + objCh.Mtx.M31 * 0.25f, objCh.Mtx.M42 + 0.9f, objCh.Mtx.M43 + objCh.Mtx.M33 * 0.25f);

            EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff12, effPos);
            AppSound.GetInstance().PlaySe(AppSound.SeId.PlDamage);
        }
예제 #11
0
        /// 死亡
        private bool statePlayDead()
        {
            Vector3 effPos = new Vector3(0, 0, 0);

            switch (statePlayTask)
            {
            /// 終了待ち
            case 0:
//            if( mvtHdl.IsActive() == false ){
                Common.VectorUtil.Set(ref effPos, objCh.BodyPos.X, objCh.BodyPos.Y, objCh.BodyPos.Z);

/*				switch(chTypeId){
 *              case Data.ChTypeId.MonsterA:        effPos.Y -= 0.6f;            break;
 *              case Data.ChTypeId.MonsterB:        effPos.Y -= 0.1f;            break;
 *              case Data.ChTypeId.MonsterC:        effPos.Y -= 0.1f;            break;
 *              }
 */
                EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff05, effPos);

                AppSound.GetInstance().PlaySeCamDis(AppSound.SeId.ObjBreak, BasePos);

                deadCnt = 0;
                statePlayTask++;
                //           }
                break;

            /// エフェクト余韻
            case 1:
                deadCnt++;
                if (deadCnt >= 25)
                {
                    Enable = false;
                }
                break;
            }

            return(true);
        }
예제 #12
0
 public void AddEffectSplash(Vector3 Position)
 {
     EventCntr.Add(ActorEventId.Effect, (int)Data.EffTypeId.Eff05, Position);
 }
예제 #13
0
 /// 開始
 public override bool Start()
 {
     EventCntr.Clear();
     Enable = DoStart();
     return(Enable);
 }