Passion & UI
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
using Cielonos.MainGame.Characters;
|
||||
using Cielonos.MainGame.Effects.Feedback;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Cielonos.MainGame.Inventory.Collections
|
||||
{
|
||||
public partial class Polychrome
|
||||
{
|
||||
public BlockData equipBlockData;
|
||||
private string _blockAnimName = "BlockL";
|
||||
|
||||
private void PlayBlockReaction(string feedbackName, float amplitudeScale)
|
||||
{
|
||||
_blockAnimName = _blockAnimName == "BlockL" ? "BlockR" : "BlockL";
|
||||
animationSc.fullBodyFuncAnimSm.Play(_blockAnimName, 1, 0);
|
||||
|
||||
var rotationShakeAction = feedbackSc.GetFeedbackData(feedbackName).Action<CameraRotationShakeAction>("Camera");
|
||||
Vector3 baseAmplitude = _blockAnimName == "BlockL" ? new Vector3(0f, -2f, 1f) : new Vector3(0f, 2f, -1f);
|
||||
rotationShakeAction.amplitude = baseAmplitude * amplitudeScale;
|
||||
|
||||
feedbackSc.PlayFeedback(feedbackName);
|
||||
}
|
||||
|
||||
private void SetBlock(BlockData blockData = null)
|
||||
{
|
||||
blockData ??= this.blockData;
|
||||
BlockSource blockSource = blockData.CreateBlockSource(player, this);
|
||||
player.landMovementSc.canDash = false;
|
||||
player.landMovementSc.canDodge = false;
|
||||
|
||||
blockSource.onNormalBlock = (attackArea) =>
|
||||
{
|
||||
PlayBlockReaction("NormalBlock", 1f);
|
||||
};
|
||||
|
||||
blockSource.onPerfectBlock = (attackArea) =>
|
||||
{
|
||||
PlayBlockReaction("PerfectBlock", 2f);
|
||||
|
||||
if (attackArea is NormalArea)
|
||||
{
|
||||
if (HasExtender<PhotonPolarizer>()) // 如果有Photon Polarizer,完美格挡会弹开并打断敌人
|
||||
{
|
||||
attackArea.creator.GetHit(Breakthrough.Type.Forced, out _);
|
||||
attackArea.creator.movementSc.impulseSm.ApplyKnockback(player.transform.forward, 6f);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
player.reactionSc.blockSm.ApplyBlock(blockSource);
|
||||
}
|
||||
|
||||
private void StayBlocking()
|
||||
{
|
||||
if (player.inputSc.IsHoldingSpecialB)
|
||||
{
|
||||
player.movementSc.canMove.Modify(true);
|
||||
player.movementSc.canRotate.Modify(true);
|
||||
OnSpecialBPress();
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveBlock(BlockData blockData = null)
|
||||
{
|
||||
blockData ??= this.blockData;
|
||||
player.landMovementSc.canDash = true;
|
||||
player.landMovementSc.canDodge = true;
|
||||
player.reactionSc.blockSm.RemoveBlock(blockData.blockName);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user