123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- /// <summary>
- /// 角色状态 闪避
- /// </summary>
- public class RoleDodge : MonoBehaviour
- {
- /// <summary>
- /// 击退的时间
- /// </summary>
- private float mPushTime = 0.5f;
- /// <summary>
- /// 击退的方向
- /// </summary>
- private Vector3 mDir = Vector3.zero;
- /// <summary>
- /// 移动速度
- /// </summary>
- private float mSpeed = 3;
- /// <summary>
- /// 延迟更新
- /// </summary>
- private float mLateUpdat = 0.15f;
- private Role role = null;
- // <summary>
- /// 击退
- /// </summary>i
- /// <param name="r">角色</param>
- /// <param name="dir">方向</param>
- public void Init(Role r, Vector3 dir, float speedf)
- {
- role = r;
- mSpeed = speedf;
- role.mInvincible = true;
- mLateUpdat = 0.15f;
- mDir = dir;
- mDir.y = 0;
- }
- /// <summary>
- /// 更新
- /// </summary>
- public void FixedUpdate()
- {
- mLateUpdat -= Time.fixedUnscaledDeltaTime;
- if (mLateUpdat > 0)
- {
- return;
- }
- mPushTime -= Time.fixedUnscaledDeltaTime;
- if (mPushTime >= 0)
- {
- role.mNavMeshAgent.velocity = mDir * mSpeed;
- }
- else
- {
- role.mInvincible = false;
- Destroy(this);
- }
- }
- }
|