public override void Cast() { if (movementComponent.RequestMoveByTime(fireThunderVector, fireThunderMovementTime, MovementPlayer.MovementMode.Ability)) { movementComponent.playerAnim.SetUseSkillType(SkillType.FireThunder);//决定释放的技能动画是哪个 } }
/// <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); } } }
public override void Cast() { if (movementComponent.RequestMoveByTime(windVector, windShortMainStatusTime, MovementPlayer.MovementMode.Ability)) { playerAnim.SetUseSkillType(SkillType.WindShort); } }
public override void Cast() { if (movement.RequestMoveByTime(targetPosition, windThunderStatusTotalTime, MovementPlayer.MovementMode.Ability)) { playerAnim.SetUseSkillType(SkillType.WindThunder); } }
/// <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); } } } } }
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 + "被弹起"); } }