Example #1
0
 public override void Cast()
 {
     if (movementComponent.RequestMoveByTime(fireThunderVector, fireThunderMovementTime, MovementPlayer.MovementMode.Ability))
     {
         movementComponent.playerAnim.SetUseSkillType(SkillType.FireThunder);//决定释放的技能动画是哪个
     }
 }
Example #2
0
    /// <summary>
    /// 被击退函数 击退方向由攻击者和被击者的位置决定,力的大小由参数parameter决定
    /// </summary>
    /// <param name="attackerPos">攻击者</param>
    /// <param name="interruptTime">击退时间</param>
    /// <param name="parameter">力大小参数</param>
    public void BeatBack(Transform attackerPos, float interruptTime, float parameter)
    {
        Vector2 fighterPos      = attackerPos.transform.position;
        Vector2 beFightedPos    = transform.position;
        Vector2 interruptVector = (beFightedPos - fighterPos).normalized * parameter;

        //获取移动组件
        //如果被打的是player
        if (gameObject.name == "Player")
        {
            MovementPlayer movement = gameObject.GetComponent <MovementPlayer>();
            if (movement.RequestChangeControlStatus(interruptTime, MovementPlayer.PlayerControlStatus.Interrupt))
            {
                movement.RequestMoveByTime(interruptVector, interruptTime, MovementPlayer.MovementMode.Attacked);
            }
        }
        else
        {
            MovementEnemies movement = gameObject.GetComponent <MovementEnemies>();
            if (movement.RequestChangeControlStatus(interruptTime, MovementEnemies.EnemyStatus.Stun))
            {
                movement.RequestMoveByTime(interruptVector, interruptTime, MovementEnemies.MovementMode.Attacked);
            }
        }
    }
Example #3
0
 public override void Cast()
 {
     if (movementComponent.RequestMoveByTime(windVector, windShortMainStatusTime, MovementPlayer.MovementMode.Ability))
     {
         playerAnim.SetUseSkillType(SkillType.WindShort);
     }
 }
Example #4
0
 public override void Cast()
 {
     if (movement.RequestMoveByTime(targetPosition, windThunderStatusTotalTime, MovementPlayer.MovementMode.Ability))
     {
         playerAnim.SetUseSkillType(SkillType.WindThunder);
     }
 }
Example #5
0
 /// <summary>
 /// 被击退函数 自定击退方向
 /// </summary>
 /// <param name="attackerPos">攻击者</param>
 /// <param name="interruptTime">打断时间</param>
 /// <param name="interruptVector">击退力的方向</param>
 public void BeatBack(Transform attackerPos, float interruptTime, Vector2 interruptVector)
 {
     if (!isImmune)
     {
         //获取移动组件
         //如果被打的是player
         if (gameObject.name == "Player")
         {
             MovementPlayer movement = gameObject.GetComponent <MovementPlayer>();
             if (movement.RequestChangeControlStatus(interruptTime, MovementPlayer.PlayerControlStatus.Stun))
             {
                 if (transform.position.x > attackerPos.position.x)
                 {
                     movement.RequestMoveByTime(interruptVector, interruptTime, MovementPlayer.MovementMode.Attacked);
                 }
                 else
                 {
                     movement.RequestMoveByTime(-interruptVector, interruptTime, MovementPlayer.MovementMode.Attacked);
                 }
             }
         }
         else
         {
             MovementEnemies movement = gameObject.GetComponent <MovementEnemies>();
             if (movement.RequestChangeControlStatus(interruptTime, MovementEnemies.EnemyStatus.Stun))
             {
                 if (transform.position.x > attackerPos.position.x)
                 {
                     movement.RequestMoveByTime(interruptVector, interruptTime, MovementEnemies.MovementMode.Attacked);
                 }
                 else
                 {
                     movement.RequestMoveByTime(-interruptVector, interruptTime, MovementEnemies.MovementMode.Attacked);
                 }
             }
         }
     }
 }
Example #6
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        Rigidbody2D rigidbody;

        if (collision.gameObject.TryGetComponent <Rigidbody2D>(out rigidbody))
        {
            //如果是玩家,则调用玩家的移动组件
            if (collision.gameObject.name == "Player")
            {
                movementPlayer.RequestMoveByTime(force, 1.5f, MovementPlayer.MovementMode.PlayerControl);
            }
            //如果是其他物体,则调用刚体的操作
            else
            {
                rigidbody.velocity = force * 2;
            }
            Debug.Log(collision.gameObject.name + "被弹起");
        }
    }