/// 命令:エフェクト再生 /** * ATB[0] : EffのNo. * ATB[1] : くっつける対象のOBJのIndex **/ private void cmdActSetEffPlay(int cmdIdx) { int effId = usePlayAct.GetAtb(cmdIdx, 0); int objIdx = usePlayAct.GetAtb(cmdIdx, 1); GameActorProduct trgActor = useUnitCmn.GetUseActor(); trgActor.EventCntr.Add(ActorEventId.Effect, effId, trgActor.GetUseObj(objIdx)); }
/// 命令:アニメーションのセット /** * ATB[0] : 再生するアニメーションNo. * ATB[1] : アニメーションをループするかのフラグ * ATB[2] : アクタに含まれる対象Objの登録No. **/ private void cmdActSetAnimation(int cmdIdx) { int animNo = usePlayAct.GetAtb(cmdIdx, 0); bool animLoopFlg = (usePlayAct.GetAtb(cmdIdx, 1) == 0)? false : true; int trgObjId = usePlayAct.GetAtb(cmdIdx, 2); GameActorProduct trgActor = useUnitCmn.GetUseActor(); if (trgActor.GetUseObjNum() <= 0) { return; } Common.ModelHandle mdlHdl = trgActor.GetUseObj(trgObjId).GetModelHdl(); if (mdlHdl == null) { return; } mdlHdl.SetPlayAnim(animNo, animLoopFlg); /// アニメーションの長さが終了フレームとする actFrameMax = mdlHdl.GetAnimLength(); }
/// 命令:攻撃のセット /** * ATB[0] : 攻撃タイプ * ATB[1] : 攻撃対象との有効角度R * ATB[2] : 攻撃対象との有効角度L * ATB[3] : 攻撃対象との有効距離 **/ private void cmdActSetAttack(int cmdIdx) { int attackType = usePlayAct.GetAtb(cmdIdx, 0); float trgRotR = (float)usePlayAct.GetAtb(cmdIdx, 1); float trgRotL = (float)usePlayAct.GetAtb(cmdIdx, 2); float trgDis = (float)usePlayAct.GetAtb(cmdIdx, 3) / 100.0f;; GameActorContainer interfereCntr = useUnitCmn.GetInterfereCntr(); GameActorProduct trgActor = useUnitCmn.GetUseActor(); /// 攻撃イベントを通達 for (int i = 0; i < interfereCntr.Num; i++) { if (interfereCntr.GetActor(i).EventCntr != null) { if (attackAreaCheck(trgActor, interfereCntr.GetActor(i), trgRotR, trgRotL, trgDis)) { interfereCntr.GetActor(i).EventCntr.Add(ActorEventId.Damage, attackType, trgActor.GetUseObj(0)); } } } }