首次提交
This commit is contained in:
119
Assets/Scripts/Fishing~/Player/FPlayer.Hand.cs
Normal file
119
Assets/Scripts/Fishing~/Player/FPlayer.Hand.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using RootMotion.FinalIK;
|
||||
using UnityEngine;
|
||||
|
||||
public partial class FPlayer
|
||||
{
|
||||
/// <summary>
|
||||
/// 把鱼线放手上
|
||||
/// </summary>
|
||||
/// <param name="lHandPoint"></param>
|
||||
/// <param name="speed"></param>
|
||||
public bool PutLineToLeftHandHelper(Transform lHandPoint, float speed = 1f)
|
||||
{
|
||||
var pin = Gears.Rod.lineHandler.pinchController;
|
||||
if (!pin.isPinched)
|
||||
{
|
||||
pin.StartPinch(lHandPoint, speed);
|
||||
}
|
||||
|
||||
if (pin.isPinched && Vector3.Distance(pin.transform.position, lHandPoint.position) < 0.1f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public float GetPlayerHandPower()
|
||||
{
|
||||
if (!Gears.Rod)
|
||||
{
|
||||
return 1f;
|
||||
}
|
||||
|
||||
if (!Gears.Rod.lineHandler)
|
||||
{
|
||||
return 1f;
|
||||
}
|
||||
|
||||
float num2 = 0f;
|
||||
|
||||
float value = 0.85f + num2;
|
||||
value = Mathf.Clamp(value, 0.5f, 1.2f);
|
||||
var num = (Gears.Rod.currentFish
|
||||
? (1f - Mathf.Clamp01(Gears.Rod.currentLineTension * value))
|
||||
: (1f - Mathf.Clamp01(Gears.Rod.linelenghtDiferent * 0.2f)));
|
||||
return Mathf.Clamp(num, 0.2f, 1.2f);
|
||||
}
|
||||
|
||||
private void MoveTowardsInteraction()
|
||||
{
|
||||
if (!interactionCCDIK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
interactionCCDIK.solver.SetIKPositionWeight(Mathf.MoveTowards(interactionCCDIK.solver.IKPositionWeight,
|
||||
interactionTargetWeight, Time.deltaTime * 2f));
|
||||
if (Mathf.Approximately(interactionCCDIK.solver.IKPositionWeight, interactionTargetWeight))
|
||||
{
|
||||
if (interactionTargetWeight == 0f)
|
||||
{
|
||||
interactionCCDIK.solver.target = null;
|
||||
// SetHandArmature(lHandPlayer, armatureLHandPosterIdle);
|
||||
}
|
||||
|
||||
interactionCCDIK = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 控制手和线轴交互
|
||||
/// </summary>
|
||||
/// <param name="interactiveObject"></param>
|
||||
public void InteractiveMainHand(Transform interactiveObject)
|
||||
{
|
||||
if (!MainArm.TryGetComponent<CCDIK>(out var component))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (interactiveObject == null)
|
||||
{
|
||||
interactionTargetWeight = 0f;
|
||||
interactionCCDIK = component;
|
||||
if (Gears.Reel)
|
||||
{
|
||||
Data.isHandOnHandle = false;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
switch (interactiveObject.tag)
|
||||
{
|
||||
case "Reel":
|
||||
component.solver.target = Gears.Reel.reelAsset.handle;
|
||||
interactionTargetWeight = 1f;
|
||||
interactionCCDIK = component;
|
||||
if ((bool)Gears.Rod && (bool)Gears.Reel)
|
||||
{
|
||||
Data.isHandOnHandle = true;
|
||||
}
|
||||
|
||||
break;
|
||||
case "ReelUnlock":
|
||||
// SetHandArmature(lHandPlayer, Gears.Reel.armatureLHandUnlockPoster);
|
||||
// component.solver.target = Gears.Reel.reelAsset.koblagHandle;
|
||||
interactionTargetWeight = 1f;
|
||||
interactionCCDIK = component;
|
||||
if ((bool)Gears.Rod && (bool)Gears.Reel)
|
||||
{
|
||||
Data.isHandOnHandle = false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user