Exemplo n.º 1
0
        /// <summary>
        /// 使用指定编号的技能 进行攻击
        /// </summary>
        /// <param name="skillId">技能编号</param>
        /// <param name="isBatter">连续攻击:连攻</param>
        public void AttackUseSkill(int skillId, bool isBatter)
        {
            //如果是连续攻击,获取下一个技能编号
            if (isBatter && currentUseSkill != null)
            {
                skillId = currentUseSkill.nextBatterId;//
            }
            //1 通过编号准备 出 对应的技能数据对象
            currentUseSkill = skillMgr.PrepareSkill(skillId);
            if (currentUseSkill == null)
            {
                return;
            }
            //2 播放技能 对应的 攻击动画【技能施放 由动画事件调用】
            chAnim.PlayAnimation(currentUseSkill.animationName);//**!!!
            //3 找出受攻击的目标
            var selectedTarget = SelectTarget();

            if (selectedTarget == null)
            {
                return;                        //!!!
            }
            //4 显示选中的目标效果(模型 上 红圈)
            //让上一个目标 隐藏红圈,让当前目标 显示红圈
            ShowSelectedFx(false);
            currentAttackTarget = selectedTarget;//将刚刚找出的目标作为当前目标
            ShowSelectedFx(true);
            //5 面向目标
            transform.LookAt(selectedTarget.transform);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 使用某个技能进行攻击
        /// </summary>
        /// <param name="skillId">技能编号</param>
        /// <param name="isBatter">是否连续攻击</param>
        public void AttackUseSkill(int skillId, bool isBatter = false)
        {
            //1根据技能吧编号 找出技能数据对象
            currentUseSkill = skillMgr.PrepareSkill(skillId);
            if (null == currentUseSkill)
            {
                return;
            }
            //2播放技能对应的攻击动画
            chAnim.PlayAnimation(currentUseSkill.animationName);
            //3找出受击目标
            var selectedTarget = SelectTarget();

            if (null == selectedTarget)
            {
                return;
            }
            //4显示选择目标效果【红圈】
            ShowSelectedFx(false);                // 前一个目标 选中效果 隐藏
            currentAttackTarget = selectedTarget; // 更新当前目标
            ShowSelectedFx(true);                 // 当前目标 选中效果 显示
            //5面向目标
            transform.LookAt(selectedTarget.transform);
            transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 移动 =经验!方法多
 /// </summary>
 public void Move(float x, float z)
 {
     if (x != 0 || z != 0)
     {
         //1转向 前往的方向
         LookAtTarget(new Vector3(x, 0, z));
         //2向目标运动:核心 调用 内置组件提供的方法【角色控制器的 运动的方法】
         //-1 表示,模拟重力:保证主角贴在地面上,不会飘起来!
         Vector3 motion = new Vector3(transform.forward.x, -1, transform.forward.z);
         chController.Move(motion * Time.deltaTime * moveSpeed);
         //3播放运动动画
         chAnim.PlayAnimation("run");
     }
     else
     {
         chAnim.PlayAnimation("idle");
     }
 }
Exemplo n.º 4
0
 /// <summary>
 /// 移动  游戏场景中的移动的做法=积累 经验
 /// </summary>
 public void Move(float h, float v)
 {
     if (h != 0 || v != 0)
     {
         //1转向前往的方向
         TransformHelper.LookAtTarget(new Vector3(h, 0, v), transform, rotationSpeed);
         //2生成一个移动的方向
         //山地:凹凸不平,y=-1 模拟重力 =试一试
         Vector3 dir = new Vector3(transform.forward.x,
                                   -1, transform.forward.z);
         //3调用角色控制器的Move的方法
         chController.Move(dir * Time.deltaTime * moveSpeed);
         //4播放运动动画
         chAnim.PlayAnimation("move");
     }
     else
     {   //播放闲置动画
         chAnim.PlayAnimation("idle");
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// 移动
        /// </summary>
        public void Move(float x, float z)
        {
            if (x != 0 || z != 0)
            {
                //1.转向
                //LookAtTarger(new Vector3(x, 0, z));
                TransformHelper.LookAtTarger(new Vector3(x, 0, z), transform, rotationSpeed);

                //2.向目标运动:调用角色控制器的运动方法
                //-1表示模拟重力,贴地走路


                Vector3 motion = new Vector3(transform.forward.x, -1, transform.forward.z);
                chController.Move(motion * Time.deltaTime * moveSpeed);


                //3.播放动画
                chAnim.PlayAnimation("run");
            }
            else
            {
                chAnim.PlayAnimation("idle");
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 使用指定编号的技能进行攻击
        /// </summary>
        /// <param name="skill">技能编号</param>
        /// <param name="Bool">是否连续攻击</param>
        public void AttackUseSkill(int skillID, bool isBatter)
        {
            //如果是连击,获取下一个技能编号
            if (isBatter && currentUseSkill != null)
            {
                skillID = currentUseSkill.nextBatterId;
            }

            //1 通过编号 获取技能
            currentUseSkill = skillMgr.PrePareSkill(skillID);



            //2 播放技能对应的攻击动画,技能释放 由动画事件调用
            if (currentUseSkill == null)
            {
                print("播放攻击动画");
                return;
            }

            chAnim.PlayAnimation(currentUseSkill.animationName);

            //3 找出受攻击的目标
            var objTarget = SelectTarget();

            if (objTarget == null)
            {
                return;
            }
            //4 显示选中的目标效果
            ShowSelectedFx(false);
            //将刚找出的目标作为攻击目标
            currentAttackTarget = objTarget;
            ShowSelectedFx(true);
            //5 面向目标
            //transform.LookAt(objTarget.transform.position);
            Vector3 euler = Quaternion.LookRotation(objTarget.transform.position - transform.position).eulerAngles;

            transform.eulerAngles = new Vector3(0, euler.y, 0);
        }
Exemplo n.º 7
0
 /// <summary>
 /// 撤销动画播放
 /// </summary>
 public void OnCancelAnim(string animName)
 {
     anim.PlayAnimation("idle");
 }