private void BindUI() { offset = transform.Find("offset").gameObject; horiMove = offset.AddComponent <HoriMove>(); bornPlace = transform.Find("offset/born"); pointRoot = transform.Find("offset/points"); }
public override void OnEnter() { //进入状态 播放对应状态动画 animator.SetBool(aniName, true); //开始跳跃时 获取一次输入 h = Input.GetAxis("Horizontal"); v = Input.GetAxis("Vertical"); Vector3 move = new Vector3(h, 0, v); if (move != Vector3.zero) //有输入 { //根据主摄像机 将direction转换为相对于相机的世界坐标 move = Camera.main.transform.TransformDirection(move); move.y = 0; //y轴值清零 move.Normalize(); //单位化向量大小 修正因摄像机Rotation导致的数值波动 transform.rotation = Quaternion.LookRotation(move); //转向移动方向 } //设定动画混合树数值 播放跳跃动画 animator.SetFloat("BlendNum", Random.Range(0, 3)); //水平移动 赋值给 最终移动方向 move *= speed; vertiMove.y = jumpSpeed; //跳跃向上速度 HoriMove.Set(move.x, 0, move.z); //水平移动速度 onGround = true; //开始时在地面上 }
public override void OnEnter() { //进入状态 播放对应状态动画 animator.SetInteger("Damage", 3); //冲击力 赋值 HoriMove.Set(player.DamageImpact.x, 0, player.DamageImpact.z); //水平方向移动 vertiMove.Set(0, player.DamageImpact.y, 0); //垂直方向移动 重力 }
public override void OnEnter() { //播放对应动画 animator.SetBool(aniName, true); //重置受伤触发 enemy.damage_ = false; //冲击力 赋值 HoriMove.Set(enemy.DamageImpact.x, 0, enemy.DamageImpact.z); //水平方向移动 vertiMove.Set(0, enemy.DamageImpact.y, 0); //垂直方向移动 重力 //播放粒子效果组 particle.Play(enemyState); }
public override void OnEnter() { //进入状态 播放对应状态动画 animator.SetBool(aniName, true); //开始跳跃时 获取一次输入 h = Input.GetAxis("Horizontal"); v = Input.GetAxis("Vertical"); Vector3 move = new Vector3(h, 0, v); //判断动画 根据摄像机方向转换direction 玩家转向 if (move != Vector3.zero) //有输入 { //根据主摄像机 将direction转换为相对于相机的世界坐标 move = Camera.main.transform.TransformDirection(move); move.y = 0; //y轴值清零 move.Normalize(); //单位化向量大小 修正因摄像机Rotation导致的数值波动 float angle = Vector3.Angle(move, transform.forward); //计算闪避方向 与 玩家当前朝向 的角度 if (angle < 140) //非后方闪避 { transform.rotation = Quaternion.LookRotation(move); //转向移动方向 animator.SetFloat("BlendNum", 1); //设定 闪避动画 混合树数值 } else //后方闪避 { transform.rotation = Quaternion.LookRotation(-move); //转向移动方向的反方向 animator.SetFloat("BlendNum", -1); //设定 闪避动画 混合树数值 } } else { move = transform.forward; //向当前Player前方闪避 animator.SetFloat("BlendNum", 1); //设定动画混合树数值 播放跳跃动画 } //水平移动 赋值给 最终移动方向 move *= speed; vertiMove.y = jumpSpeed; //跳跃向上速度 HoriMove.Set(move.x, 0, move.z); //水平移动速度 //默认鼠标连击未按下 nextCombo = false; //播放粒子效果组 particle.Play(playerState); }
public override void OnExcute() { Gravity(); //模拟重力 //状态保护 进入动画后才执行方法 if (!animator.GetCurrentAnimatorStateInfo(0).IsName(aniName)) return; //获取键盘输入 h = Input.GetAxis("Horizontal"); v = Input.GetAxis("Vertical"); Vector3 move = new Vector3(h, 0, v); if (move != Vector3.zero) //有输入 { float walkSpeed; //走路模式速度 if (inWalk) //走路模式 { //设定动画混合树数值 播放走路动画 animator.SetFloat("BlendNum", move.magnitude * -2.0f); walkSpeed = 0.3f; //设置移动速度 } else { //设定动画混合树数值 播放奔跑动画 animator.SetFloat("BlendNum", move.magnitude * 2.0f); walkSpeed = 1.0f; } //根据主摄像机 将direction转换为相对于相机的世界坐标 move = Camera.main.transform.TransformDirection(move); move.y = 0; //y轴值清零 move.Normalize(); //单位化向量大小 修正因摄像机Rotation导致的数值波动 transform.rotation = Quaternion.LookRotation(move); //转向移动方向 //水平移动 move *= speed * walkSpeed; HoriMove.Set(move.x, 0, move.z); cc.Move(HoriMove * Time.deltaTime); } else //无输入时清零水平移动 { //设定动画混合树数值 播放Idle动画 animator.SetFloat("BlendNum", move.magnitude); } }
public override void OnEnter() { if (player.StateActionCheck(PlayerState.Death)) { //切换到 死亡状态 manager.ChangeState <PlayerStateDeath>(); return; } //进入状态 播放对应状态动画 animator.SetInteger("Damage", 1); //冲击力 赋值 HoriMove.Set(player.DamageImpact.x, 0, player.DamageImpact.z); //水平方向移动 vertiMove.Set(0, player.DamageImpact.y, 0); //垂直方向移动 重力 //转向冲击力反方向 transform.rotation = Quaternion.LookRotation(-HoriMove); //播放粒子效果组 particle.Play(playerState); }
public override void OnEnter() { //播放对应动画 animator.SetBool(aniName, true); //重置受伤触发 orcKing.damage_ = false; //是否死亡 if (orcKing.Death) { //切换到 死亡状态 if (manager.ChangeState <OrcKiStateDeath>()) { return; } } //冲击力 赋值 HoriMove.Set(orcKing.DamageImpact.x, 0, orcKing.DamageImpact.z); //水平方向移动 vertiMove.Set(0, orcKing.DamageImpact.y, 0); //垂直方向移动 重力 //开始时在地面 onGround = true; //播放粒子效果组 particle.Play(orcKiState); //兽人首领 冲击力过小 直接回到追逐状态 if (orcKing.DamageImpact.magnitude < 20.0f) { //切换到追逐状态 if (manager.ChangeState <OrcKiStateChase>()) { return; } } }