using Axibug;
using Axibug.Runtime;
using System.Collections.Generic;
using UnityEngine;
namespace Game
{
public class MainRole : RoleBase
{
protected SpriteRenderer mSpriteRenderer;
public SnapshotData mRoleSnapshot;
///
/// 初始化
///
///
public void Init(S_ROLE_SELF data)
{
base.Init(data);
mRoleSnapshot = new SnapshotData();
}
protected override void Awake()
{
base.Awake();
mSpriteRenderer = mModelTransfrom.GetComponent();
}
protected override void OnEnable()
{
base.OnEnable();
}
protected override void OnDisable()
{
base.OnDisable();
}
protected override void FixedUpdate()
{
base.FixedUpdate();
FixedUpdate_FastMoveMode();
}
const int SnapInterval = 3;
int SnapIntervalIndex = 0;
protected override void Update()
{
base.Update();
SnapIntervalIndex++;
if (SnapIntervalIndex >= SnapInterval)
{
mRoleSnapshot.AddSnap(mSpriteRenderer.sprite, mBridgeTransfrom.localEulerAngles, transform.position);
SnapIntervalIndex = 0;
}
if (Input.GetKeyDown(KeyCode.T))
{
RoleFastShadow fastshadow = GamePlayEntry.EffectMgr.rolegastEftPool.GetAnyHide();
//设置影子
//fastshadow.SetData(mSpriteRenderer.sprite, mBridgeTransfrom.localEulerAngles, transform.position);
}
if (Input.GetKeyDown(KeyCode.G))
{
Anime.SetAnimatorSpeed(1f);
Move_BaseSpeed = 3.5f * 1f;
}
if (Input.GetKeyDown(KeyCode.Y))
{
Anime.SetAnimatorSpeed(1.5f);
Move_BaseSpeed = 3.5f * 1.5f;
}
if (Input.GetKeyDown(KeyCode.U))
{
Anime.SetAnimatorSpeed(2f);
Move_BaseSpeed = 3.5f * 2f;
}
if (Input.GetKeyDown(KeyCode.I))
{
Anime.SetAnimatorSpeed(2.6f);
Move_BaseSpeed = 3.5f * 2.6f;
}
}
public override void MeshChangeMoveState(bool ToMoveState)
{
if (ToMoveState)
{
Anime.StartRun();
}
else
{
Anime.BackToIdle();
}
}
public override void Release()
{
}
#region 高速移动模式
private bool mIsFastSkillMode = false;
private float LastFastShadowCreateTime = 0;
public bool IsFastSkillMode
{
get { return mIsFastSkillMode; }
set
{
if (mIsFastSkillMode != value)
{
mIsFastSkillMode = value;
if (value)
{
AxibugLog.Debug("高速模式:开");
//刚开始高速移动模式
Move_SpeedMultiplier = ConstClass.FastRunSpeedMultiplier;
Anime.SetAnimatorSpeed(ConstClass.FastRunSpeedMultiplier);
AttackBoxAnime.SetBool("KeepAttack", true);
}
else
{
AxibugLog.Debug("高速模式:关");
//刚停止高速移动模式
Move_SpeedMultiplier = 1f;
Anime.SetAnimatorSpeed(1f);
AttackBoxAnime.SetBool("KeepAttack", false);
//Camera.main.fieldOfView = GamePlayEntry.MainPlayer.srcCameraFov;
//清理影子
GamePlayEntry.EffectMgr.rolegastEftPool.Hide();
}
}
}
}
public void FixedUpdate_FastMoveMode()
{
if (!IsMove)
{
IsFastSkillMode = false;
}
else
{
//如果超过移动时间
if(MoveTime > ConstClass.ToFastModeTime)
IsFastSkillMode = true;
else
IsFastSkillMode = false;
}
//高速模式开影子
if (IsFastSkillMode)
{
if (Time.time - LastFastShadowCreateTime > ConstClass.FastModeShadowCreateIntervalTime)
{
LastFastShadowCreateTime = Time.time;
AxibugLog.Debug("创建影子");
//创建影子
GamePlayEntry.EffectMgr.rolegastEftPool.GetAnyHide();
}
float fov = Camera.main.fieldOfView;
fov += 30f * Time.deltaTime;
fov = Mathf.Min(GamePlayEntry.MainPlayer.srcCameraFov + 10f, fov);
Camera.main.fieldOfView = fov;
}
else
{
float fov = Camera.main.fieldOfView;
fov -= 25f * Time.deltaTime;
fov = Mathf.Max(GamePlayEntry.MainPlayer.srcCameraFov, fov);
Camera.main.fieldOfView = fov;
}
}
#endregion
}
}