Rework diapason with octo arms

This commit is contained in:
2026-02-19 17:16:54 +01:00
parent ec89813b1b
commit 5b1bdaeb90
48 changed files with 2075 additions and 583 deletions
+461
View File
@@ -0,0 +1,461 @@
using UnityEngine;
public enum ArmState
{
Environmental,
TransitionToEquipped,
Equipped,
TransitionToEnvironmental
}
[System.Serializable]
public class ArmEquipment
{
[Header("Arm References")]
public OctoIkLimb IkLimb;
public Transform HandSocket;
[Header("Bone References (for procedural animation)")]
[Tooltip("Shoulder bone (optional)")]
public Transform ShoulderBone;
[Tooltip("Elbow bone (optional)")]
public Transform ElbowBone;
[Tooltip("Wrist bone (required for rotation)")]
public Transform WristBone;
[Header("Equipped Pose Settings")]
[Tooltip("Rotation to apply to shoulder when equipped")]
public Vector3 ShoulderRotationOffset = Vector3.zero;
[Tooltip("Rotation to apply to elbow when equipped")]
public Vector3 ElbowRotationOffset = Vector3.zero;
[Tooltip("Rotation to apply to wrist when equipped")]
public Vector3 WristRotationOffset = new Vector3(0, 0, 90);
[Tooltip("Speed of rotation lerp")]
[Range(1f, 20f)]
public float RotationSpeed = 10f;
[Tooltip("Duration of IK blend after unequip transition")]
[Range(0.1f, 1f)]
public float IkBlendDuration = 0.3f;
[Header("Transition Settings")]
[Tooltip("Position offset where arm exits camera view")]
public Vector3 TransitionOffset = new Vector3(0.5f, -0.3f, 0.2f);
[Tooltip("Duration for arm to move out of view")]
public float TransitionOutDuration = 0.3f;
[Tooltip("Duration for arm to return to view")]
public float TransitionInDuration = 0.3f;
[Tooltip("Curve for transition movement")]
public AnimationCurve TransitionCurve = AnimationCurve.EaseInOut(0, 0, 1, 1);
[Header("Tap Animation")]
[Tooltip("Elbow rotation during windup (degrees)")]
public float TapWindupRotation = 15f;
[Tooltip("Duration of windup (pull back)")]
public float TapWindupDuration = 0.1f;
[Tooltip("Duration of strike (forward snap)")]
public float TapStrikeDuration = 0.05f;
[Tooltip("Wrist snap rotation during strike (degrees)")]
public float TapWristSnapRotation = 10f;
[Tooltip("Shake intensity during vibration")]
public float ShakeIntensity = 2f;
[Tooltip("Shake speed (frequency)")]
public float ShakeSpeed = 30f;
[HideInInspector] public ArmState State = ArmState.Environmental;
[HideInInspector] public Vector3 OriginalTargetPosition;
[HideInInspector] public Quaternion OriginalTargetRotation;
[HideInInspector] public GameObject EquippedObject;
[HideInInspector] public float IkWeight = 1f;
[HideInInspector] public Quaternion OriginalShoulderRotation;
[HideInInspector] public Quaternion OriginalElbowRotation;
[HideInInspector] public Quaternion OriginalWristRotation;
private int _transitionTweenId = -1;
private int _ikWeightTweenId = -1;
private int _ikBlendTweenId = -1;
private bool _isBlendingToIk = false;
private int _tapTweenId = -1;
private bool _isShaking = false;
private Quaternion _transitionStartShoulder;
private Quaternion _transitionStartElbow;
private Quaternion _transitionStartWrist;
public void Initialize()
{
if (IkLimb != null && IkLimb.Target != null)
{
OriginalTargetPosition = IkLimb.Target.localPosition;
OriginalTargetRotation = IkLimb.Target.localRotation;
}
if (ShoulderBone != null)
OriginalShoulderRotation = ShoulderBone.localRotation;
if (ElbowBone != null)
OriginalElbowRotation = ElbowBone.localRotation;
if (WristBone != null)
OriginalWristRotation = WristBone.localRotation;
State = ArmState.Environmental;
IkWeight = 1f;
}
public void StartTransitionToEquipped(GameObject objectToEquip, System.Action onTransitionComplete)
{
if (State != ArmState.Environmental)
return;
State = ArmState.TransitionToEquipped;
EquippedObject = objectToEquip;
CancelActiveTweens();
if (IkLimb == null || IkLimb.Target == null)
{
CompleteEquip(onTransitionComplete);
return;
}
Vector3 transitionTarget = OriginalTargetPosition + TransitionOffset;
_transitionTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, TransitionOutDuration)
.setEase(TransitionCurve)
.setOnUpdate((float t) => {
if (IkLimb != null && IkLimb.Target != null)
{
IkLimb.Target.localPosition = Vector3.Lerp(IkLimb.Target.localPosition, transitionTarget, t);
}
})
.setOnComplete(() => {
_transitionTweenId = -1;
CompleteEquip(onTransitionComplete);
}).id;
_ikWeightTweenId = LeanTween.value(IkLimb.gameObject, IkWeight, 0f, TransitionOutDuration * 0.5f)
.setOnUpdate((float val) => {
IkWeight = val;
})
.setOnComplete(() => {
_ikWeightTweenId = -1;
}).id;
}
private void CompleteEquip(System.Action onComplete)
{
State = ArmState.Equipped;
if (IkLimb != null)
{
IkLimb.enabled = false;
}
if (EquippedObject != null && HandSocket != null)
{
EquippedObject.transform.SetParent(HandSocket, false);
EquippedObject.transform.localPosition = Vector3.zero;
EquippedObject.transform.localRotation = Quaternion.identity;
}
onComplete?.Invoke();
}
public void UpdateEquippedPose()
{
if (State != ArmState.Equipped && !_isBlendingToIk)
return;
if (_isShaking)
{
UpdateShake();
return;
}
if (State == ArmState.Equipped)
{
float deltaTime = UnityEngine.Time.deltaTime;
float lerpSpeed = 1f - Mathf.Exp(-RotationSpeed * deltaTime);
if (ShoulderBone != null)
{
Quaternion targetRot = OriginalShoulderRotation * Quaternion.Euler(ShoulderRotationOffset);
ShoulderBone.localRotation = Quaternion.Slerp(ShoulderBone.localRotation, targetRot, lerpSpeed);
}
if (ElbowBone != null)
{
Quaternion targetRot = OriginalElbowRotation * Quaternion.Euler(ElbowRotationOffset);
ElbowBone.localRotation = Quaternion.Slerp(ElbowBone.localRotation, targetRot, lerpSpeed);
}
if (WristBone != null)
{
Quaternion targetRot = OriginalWristRotation * Quaternion.Euler(WristRotationOffset);
WristBone.localRotation = Quaternion.Slerp(WristBone.localRotation, targetRot, lerpSpeed);
}
}
}
public void StartTransitionToEnvironmental(System.Action onTransitionComplete)
{
if (State != ArmState.Equipped)
return;
State = ArmState.TransitionToEnvironmental;
CancelActiveTweens();
_transitionStartShoulder = ShoulderBone != null ? ShoulderBone.localRotation : Quaternion.identity;
_transitionStartElbow = ElbowBone != null ? ElbowBone.localRotation : Quaternion.identity;
_transitionStartWrist = WristBone != null ? WristBone.localRotation : Quaternion.identity;
if (IkLimb == null || IkLimb.Target == null)
{
CompleteUnequip(onTransitionComplete);
return;
}
Vector3 currentPosition = IkLimb.Target.localPosition;
Vector3 transitionTarget = OriginalTargetPosition + TransitionOffset;
_ikWeightTweenId = LeanTween.value(IkLimb.gameObject, IkWeight, 0f, TransitionInDuration * 0.5f)
.setOnUpdate((float val) => {
IkWeight = val;
})
.setOnComplete(() => {
_ikWeightTweenId = -1;
}).id;
_transitionTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, TransitionInDuration)
.setEase(TransitionCurve)
.setOnUpdate((float t) => {
if (IkLimb != null && IkLimb.Target != null)
{
IkLimb.Target.localPosition = Vector3.Lerp(currentPosition, transitionTarget, t);
}
if (ShoulderBone != null)
ShoulderBone.localRotation = Quaternion.Slerp(_transitionStartShoulder, OriginalShoulderRotation, t);
if (ElbowBone != null)
ElbowBone.localRotation = Quaternion.Slerp(_transitionStartElbow, OriginalElbowRotation, t);
if (WristBone != null)
WristBone.localRotation = Quaternion.Slerp(_transitionStartWrist, OriginalWristRotation, t);
})
.setOnComplete(() => {
_transitionTweenId = -1;
StartIkBlend(onTransitionComplete);
}).id;
}
private void StartIkBlend(System.Action onTransitionComplete)
{
if (IkLimb != null)
{
IkLimb.enabled = true;
}
if (EquippedObject != null)
{
if (HandSocket != null)
EquippedObject.transform.SetParent(null);
UnityEngine.Object.Destroy(EquippedObject);
EquippedObject = null;
}
_isBlendingToIk = true;
Quaternion startShoulder = ShoulderBone != null ? ShoulderBone.localRotation : Quaternion.identity;
Quaternion startElbow = ElbowBone != null ? ElbowBone.localRotation : Quaternion.identity;
Quaternion startWrist = WristBone != null ? WristBone.localRotation : Quaternion.identity;
Vector3 startTargetPos = IkLimb != null && IkLimb.Target != null ? IkLimb.Target.localPosition : Vector3.zero;
Quaternion startTargetRot = IkLimb != null && IkLimb.Target != null ? IkLimb.Target.localRotation : Quaternion.identity;
if (IkLimb != null && IkLimb.gameObject != null)
{
_ikBlendTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, IkBlendDuration)
.setEase(LeanTweenType.easeOutQuad)
.setOnUpdate((float t) => {
if (ShoulderBone != null)
ShoulderBone.localRotation = Quaternion.Slerp(startShoulder, OriginalShoulderRotation, t);
if (ElbowBone != null)
ElbowBone.localRotation = Quaternion.Slerp(startElbow, OriginalElbowRotation, t);
if (WristBone != null)
WristBone.localRotation = Quaternion.Slerp(startWrist, OriginalWristRotation, t);
if (IkLimb != null && IkLimb.Target != null)
{
IkLimb.Target.localPosition = Vector3.Lerp(startTargetPos, OriginalTargetPosition, t);
IkLimb.Target.localRotation = Quaternion.Slerp(startTargetRot, OriginalTargetRotation, t);
}
IkWeight = t;
})
.setOnComplete(() => {
_ikBlendTweenId = -1;
CompleteUnequip(onTransitionComplete);
}).id;
}
else
{
CompleteUnequip(onTransitionComplete);
}
}
private void CompleteUnequip(System.Action onComplete)
{
State = ArmState.Environmental;
_isBlendingToIk = false;
if (IkLimb != null && IkLimb.Target != null)
{
IkLimb.Target.localPosition = OriginalTargetPosition;
IkLimb.Target.localRotation = OriginalTargetRotation;
}
if (ShoulderBone != null)
ShoulderBone.localRotation = OriginalShoulderRotation;
if (ElbowBone != null)
ElbowBone.localRotation = OriginalElbowRotation;
if (WristBone != null)
WristBone.localRotation = OriginalWristRotation;
onComplete?.Invoke();
}
public void CancelActiveTweens()
{
if (_transitionTweenId != -1)
{
LeanTween.cancel(_transitionTweenId);
_transitionTweenId = -1;
}
if (_ikWeightTweenId != -1)
{
LeanTween.cancel(_ikWeightTweenId);
_ikWeightTweenId = -1;
}
if (_ikBlendTweenId != -1)
{
LeanTween.cancel(_ikBlendTweenId);
_ikBlendTweenId = -1;
}
if (_tapTweenId != -1)
{
LeanTween.cancel(_tapTweenId);
_tapTweenId = -1;
}
_isBlendingToIk = false;
_isShaking = false;
}
public void PlayTapAnimation()
{
if (State != ArmState.Equipped)
return;
if (_tapTweenId != -1)
{
LeanTween.cancel(_tapTweenId);
}
Quaternion elbowStart = ElbowBone != null ? ElbowBone.localRotation : Quaternion.identity;
Quaternion wristStart = WristBone != null ? WristBone.localRotation : Quaternion.identity;
Quaternion elbowWindup = elbowStart * Quaternion.Euler(0, 0, -TapWindupRotation);
Quaternion elbowStrike = elbowStart * Quaternion.Euler(0, 0, TapWindupRotation * 0.3f);
Quaternion wristWindup = wristStart;
Quaternion wristStrike = wristStart * Quaternion.Euler(0, 0, -TapWristSnapRotation);
_tapTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, TapWindupDuration)
.setOnUpdate((float t) => {
if (ElbowBone != null)
{
ElbowBone.localRotation = Quaternion.Slerp(elbowStart, elbowWindup, t);
}
if (WristBone != null)
{
WristBone.localRotation = Quaternion.Slerp(wristStart, wristWindup, t);
}
})
.setOnComplete(() => {
_tapTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, TapStrikeDuration)
.setOnUpdate((float t) => {
if (ElbowBone != null)
{
ElbowBone.localRotation = Quaternion.Slerp(elbowWindup, elbowStrike, t);
}
if (WristBone != null)
{
WristBone.localRotation = Quaternion.Slerp(wristWindup, wristStrike, t);
}
})
.setOnComplete(() => {
_tapTweenId = LeanTween.value(IkLimb.gameObject, 0f, 1f, 0.1f)
.setOnUpdate((float t) => {
if (ElbowBone != null)
{
ElbowBone.localRotation = Quaternion.Slerp(elbowStrike, elbowStart, t);
}
if (WristBone != null)
{
WristBone.localRotation = Quaternion.Slerp(wristStrike, wristStart, t);
}
})
.setOnComplete(() => {
_tapTweenId = -1;
}).id;
}).id;
}).id;
}
public void StartShake()
{
_isShaking = true;
}
public void StopShake()
{
_isShaking = false;
}
public void UpdateShake()
{
if (!_isShaking || State != ArmState.Equipped || WristBone == null)
return;
float shake = Mathf.Sin(UnityEngine.Time.time * ShakeSpeed) * ShakeIntensity;
Quaternion shakeRotation = Quaternion.Euler(shake, shake * 0.5f, 0);
Quaternion targetRot = OriginalWristRotation * Quaternion.Euler(WristRotationOffset) * shakeRotation;
WristBone.localRotation = targetRot;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 80d59ec0ac09852429c56ca6c42464c2
+357
View File
@@ -0,0 +1,357 @@
using UnityEngine;
using UnityEngine.InputSystem;
using Unheimlich.Audio;
using System;
using System.Collections;
public class DiapasonEquipmentManager : MonoBehaviour
{
[Header("References")]
[SerializeField] private OctoIkArmsImproved _armsSystem;
[SerializeField] private GameObject _diapasonPrefab;
[SerializeField] private int _equipmentArmIndex = 1;
[Header("Detection Settings")]
[SerializeField] private LayerMask _soundEmitterLayer;
[SerializeField] private float _detectionRadius = 0.15f;
[SerializeField] private Transform[] _detectionPoints;
[Header("Visual Feedback")]
[SerializeField] private GameObject _contactFeedbackPrefab;
[Header("Diapason Animation")]
[SerializeField] private string _vibratingBoolParam = "IsVibrating";
[SerializeField] private string _tapTriggerParam = "Tap";
[Header("Tap Settings")]
[SerializeField] private AudioClip _tapSound;
[SerializeField] [Range(0f, 1f)] private float _tapVolume = 1f;
[SerializeField] private float _vibrationDuration = 15f;
public bool IsEquipped => _isEquipped;
public AudioListenable CurrentDetectedEmitter => _currentDetectedEmitter;
public bool CanTap => _isEquipped && _currentDetectedEmitter != null && !_isVibrating && !_currentDetectedEmitter.HasBeenTapped;
public event Action<AudioListenable> OnEmitterDetected;
public event Action<AudioListenable> OnEmitterLost;
private GameObject _spawnedDiapason;
private bool _isEquipped = false;
private AudioListenable _currentDetectedEmitter;
private GameObject _contactFeedback;
private bool _isVibrating = false;
private AudioSource _audioSource;
private Coroutine _vibrationCoroutine;
private Animator _diapasonAnimator;
private ParticleSystem _diapasonParticles;
void Awake()
{
if (_armsSystem == null)
{
_armsSystem = GetComponent<OctoIkArmsImproved>();
if (_armsSystem == null)
{
Debug.LogError("[DiapasonEquipment] OctoIkArmsImproved not found!");
}
}
_audioSource = GetComponent<AudioSource>();
if (_audioSource == null)
{
_audioSource = gameObject.AddComponent<AudioSource>();
}
}
void Update()
{
if (_isEquipped && _armsSystem.GetArmState(_equipmentArmIndex) == ArmState.Equipped)
{
CheckForSoundEmitters();
if (Mouse.current != null && Mouse.current.leftButton.wasPressedThisFrame)
{
if (CanTap)
{
TapDiapason();
}
}
}
}
public void EquipDiapason()
{
if (_isEquipped)
{
Debug.LogWarning("[DiapasonEquipment] Diapason already equipped!");
return;
}
if (_diapasonPrefab == null)
{
Debug.LogError("[DiapasonEquipment] Diapason prefab not assigned!");
return;
}
_spawnedDiapason = Instantiate(_diapasonPrefab);
_spawnedDiapason.SetActive(true);
_diapasonAnimator = _spawnedDiapason.GetComponentInChildren<Animator>(true);
if (_diapasonAnimator == null)
{
Debug.LogWarning("[DiapasonEquipment] No Animator found on spawned diapason");
}
else
{
_diapasonAnimator.enabled = false;
}
_diapasonParticles = _spawnedDiapason.GetComponentInChildren<ParticleSystem>(true);
if (_diapasonParticles == null)
{
Debug.LogWarning("[DiapasonEquipment] No ParticleSystem found on spawned diapason");
}
_armsSystem.EquipObjectOnArm(_equipmentArmIndex, _spawnedDiapason, () => {
_isEquipped = true;
OnDiapasonEquipped();
});
}
public void UnequipDiapason()
{
if (!_isEquipped)
{
Debug.LogWarning("[DiapasonEquipment] Diapason not equipped!");
return;
}
if (_vibrationCoroutine != null)
{
StopCoroutine(_vibrationCoroutine);
_vibrationCoroutine = null;
}
if (_currentDetectedEmitter != null)
{
_currentDetectedEmitter.SetConcentrating(false);
_currentDetectedEmitter.StopListening(cancelConcentrationFade: false);
_currentDetectedEmitter = null;
}
_armsSystem.UnequipObjectFromArm(_equipmentArmIndex, () => {
_isEquipped = false;
_spawnedDiapason = null;
OnDiapasonUnequipped();
});
}
private void CheckForSoundEmitters()
{
if (_detectionPoints == null || _detectionPoints.Length == 0)
return;
AudioListenable closestEmitter = null;
float closestDistance = float.MaxValue;
foreach (Transform detectionPoint in _detectionPoints)
{
if (detectionPoint == null)
continue;
Collider[] hits = Physics.OverlapSphere(detectionPoint.position, _detectionRadius, _soundEmitterLayer);
foreach (Collider hit in hits)
{
AudioListenable emitter = hit.GetComponent<AudioListenable>();
if (emitter != null)
{
float distance = Vector3.Distance(detectionPoint.position, hit.transform.position);
if (distance < closestDistance)
{
closestDistance = distance;
closestEmitter = emitter;
}
}
}
}
if (closestEmitter != _currentDetectedEmitter)
{
if (_currentDetectedEmitter != null)
{
OnEmitterExited(_currentDetectedEmitter);
}
_currentDetectedEmitter = closestEmitter;
if (_currentDetectedEmitter != null)
{
OnEmitterEntered(_currentDetectedEmitter);
}
}
}
private void OnDiapasonEquipped()
{
if (_diapasonAnimator != null)
{
_diapasonAnimator.enabled = true;
_diapasonAnimator.SetBool(_vibratingBoolParam, false);
}
if (_diapasonParticles != null)
{
_diapasonParticles.Stop();
var emission = _diapasonParticles.emission;
emission.enabled = false;
}
}
private void OnDiapasonUnequipped()
{
_isVibrating = false;
_diapasonAnimator = null;
_diapasonParticles = null;
}
public void TapDiapason()
{
if (!CanTap)
{
Debug.LogWarning("[DiapasonEquipment] Cannot tap: not equipped, no contact, or already tapped");
return;
}
ArmEquipment equipment = _armsSystem.GetArmEquipment(_equipmentArmIndex);
if (equipment != null)
{
equipment.PlayTapAnimation();
equipment.StartShake();
}
if (_tapSound != null && _audioSource != null)
{
_audioSource.PlayOneShot(_tapSound, _tapVolume);
}
if (_diapasonAnimator != null)
{
_diapasonAnimator.SetTrigger(_tapTriggerParam);
_diapasonAnimator.SetBool(_vibratingBoolParam, true);
}
if (_diapasonParticles != null)
{
var emission = _diapasonParticles.emission;
emission.enabled = true;
_diapasonParticles.Play();
}
_isVibrating = true;
if (_currentDetectedEmitter != null)
{
_currentDetectedEmitter.StartListening(transform.position);
}
if (_vibrationCoroutine != null)
StopCoroutine(_vibrationCoroutine);
_vibrationCoroutine = StartCoroutine(StopVibrationAfterDuration());
}
private IEnumerator StopVibrationAfterDuration()
{
yield return new WaitForSeconds(_vibrationDuration);
if (_diapasonAnimator != null)
{
_diapasonAnimator.SetBool(_vibratingBoolParam, false);
}
if (_diapasonParticles != null)
{
_diapasonParticles.Stop();
var emission = _diapasonParticles.emission;
emission.enabled = false;
}
if (_currentDetectedEmitter != null)
{
_currentDetectedEmitter.StopListening();
}
ArmEquipment equipment = _armsSystem.GetArmEquipment(_equipmentArmIndex);
if (equipment != null)
{
equipment.StopShake();
}
_isVibrating = false;
_vibrationCoroutine = null;
}
private void OnEmitterEntered(AudioListenable emitter)
{
emitter.SetConcentrating(true);
if (_contactFeedbackPrefab != null && _contactFeedback == null)
{
_contactFeedback = Instantiate(_contactFeedbackPrefab, emitter.transform);
_contactFeedback.transform.localPosition = Vector3.zero;
}
OnEmitterDetected?.Invoke(emitter);
}
private void OnEmitterExited(AudioListenable emitter)
{
emitter.SetConcentrating(false);
if (!emitter.HasBeenTapped)
{
emitter.StopListening();
}
if (_contactFeedback != null)
{
Destroy(_contactFeedback);
_contactFeedback = null;
}
if (_diapasonAnimator != null)
{
_diapasonAnimator.SetBool(_vibratingBoolParam, false);
}
if (_diapasonParticles != null)
{
_diapasonParticles.Stop();
var emission = _diapasonParticles.emission;
emission.enabled = false;
}
_isVibrating = false;
OnEmitterLost?.Invoke(emitter);
}
void OnDrawGizmosSelected()
{
if (_detectionPoints == null || !_isEquipped)
return;
Gizmos.color = Color.yellow;
foreach (Transform detectionPoint in _detectionPoints)
{
if (detectionPoint != null)
{
Gizmos.DrawWireSphere(detectionPoint.position, _detectionRadius);
}
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 38b80731eb88f834ab3d79a566e40b48
+41
View File
@@ -0,0 +1,41 @@
using UnityEngine;
using UnityEngine.InputSystem;
public class DiapasonEquipmentTester : MonoBehaviour
{
[Header("References")]
[SerializeField] private DiapasonEquipmentManager _equipmentManager;
[Header("Input")]
[SerializeField] private Key _equipKey = Key.E;
[SerializeField] private Key _unequipKey = Key.R;
void Update()
{
if (_equipmentManager == null)
return;
if (Keyboard.current[_equipKey].wasPressedThisFrame)
{
_equipmentManager.EquipDiapason();
}
if (Keyboard.current[_unequipKey].wasPressedThisFrame)
{
_equipmentManager.UnequipDiapason();
}
}
void OnGUI()
{
GUILayout.BeginArea(new Rect(10, 10, 350, 150));
GUILayout.Label("=== Diapason Equipment System ===");
GUILayout.Label($"Press {_equipKey} to Equip Diapason");
GUILayout.Label($"Press {_unequipKey} to Unequip Diapason");
GUILayout.Label("");
GUILayout.Label("When equipped:");
GUILayout.Label("• Move LEFT hand to touch AudioListenable");
GUILayout.Label("• LEFT CLICK to tap and activate");
GUILayout.EndArea();
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9279e0fb73118d14ba6f2cf05170a660
+175
View File
@@ -0,0 +1,175 @@
using UnityEngine;
[ExecuteInEditMode]
public class DiapasonPoseTweaker : MonoBehaviour
{
[Header("References")]
[SerializeField] private OctoIkArmsImproved _armsSystem;
[SerializeField] private int _armIndex = 1;
[Header("Quick Presets")]
[SerializeField] private bool _applyPreset1 = false;
[SerializeField] private bool _applyPreset2 = false;
[SerializeField] private bool _applyPreset3 = false;
[Header("Live Tweaking (Runtime Only)")]
[SerializeField] private Vector3 _shoulderRotation = new Vector3(20, 0, -10);
[SerializeField] private Vector3 _elbowRotation = new Vector3(0, 0, 0);
[SerializeField] private Vector3 _wristRotation = new Vector3(0, 0, 90);
[Header("Preview")]
[SerializeField] private bool _previewPose = false;
private ArmEquipment _equipment;
private bool _wasPreviewActive = false;
void Update()
{
if (!Application.isPlaying)
return;
if (_armsSystem == null)
return;
if (_equipment == null)
{
var armRigField = typeof(OctoIkArmsImproved).GetField("_rightArm",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (armRigField != null)
{
var armRig = armRigField.GetValue(_armsSystem);
var equipmentField = armRig.GetType().GetField("Equipment");
if (equipmentField != null)
{
_equipment = (ArmEquipment)equipmentField.GetValue(armRig);
}
}
}
if (_equipment == null)
return;
if (_previewPose && _equipment.State == ArmState.Environmental)
{
ApplyRotations();
_wasPreviewActive = true;
}
else if (_wasPreviewActive && !_previewPose)
{
ResetRotations();
_wasPreviewActive = false;
}
if (_equipment.State == ArmState.Equipped)
{
_equipment.ShoulderRotationOffset = _shoulderRotation;
_equipment.ElbowRotationOffset = _elbowRotation;
_equipment.WristRotationOffset = _wristRotation;
}
}
void OnValidate()
{
if (_applyPreset1)
{
_applyPreset1 = false;
ApplyPreset1();
}
if (_applyPreset2)
{
_applyPreset2 = false;
ApplyPreset2();
}
if (_applyPreset3)
{
_applyPreset3 = false;
ApplyPreset3();
}
}
private void ApplyPreset1()
{
_shoulderRotation = new Vector3(30, 0, -15);
_elbowRotation = new Vector3(0, 10, 0);
_wristRotation = new Vector3(0, 0, 90);
Debug.Log("[DiapasonPose] Applied Preset 1: Close to body, slight inward");
}
private void ApplyPreset2()
{
_shoulderRotation = new Vector3(20, -10, -20);
_elbowRotation = new Vector3(0, 0, 0);
_wristRotation = new Vector3(0, -15, 90);
Debug.Log("[DiapasonPose] Applied Preset 2: Further from left hand, angled");
}
private void ApplyPreset3()
{
_shoulderRotation = new Vector3(15, 0, -25);
_elbowRotation = new Vector3(0, 15, 0);
_wristRotation = new Vector3(0, 0, 85);
Debug.Log("[DiapasonPose] Applied Preset 3: Natural grip, centered");
}
private void ApplyRotations()
{
if (_equipment.ShoulderBone != null)
{
_equipment.ShoulderBone.localRotation = _equipment.OriginalShoulderRotation * Quaternion.Euler(_shoulderRotation);
}
if (_equipment.ElbowBone != null)
{
_equipment.ElbowBone.localRotation = _equipment.OriginalElbowRotation * Quaternion.Euler(_elbowRotation);
}
if (_equipment.WristBone != null)
{
_equipment.WristBone.localRotation = _equipment.OriginalWristRotation * Quaternion.Euler(_wristRotation);
}
}
private void ResetRotations()
{
if (_equipment.ShoulderBone != null)
{
_equipment.ShoulderBone.localRotation = _equipment.OriginalShoulderRotation;
}
if (_equipment.ElbowBone != null)
{
_equipment.ElbowBone.localRotation = _equipment.OriginalElbowRotation;
}
if (_equipment.WristBone != null)
{
_equipment.WristBone.localRotation = _equipment.OriginalWristRotation;
}
}
void OnGUI()
{
if (!Application.isPlaying)
return;
GUILayout.BeginArea(new Rect(10, 150, 350, 250));
GUILayout.Label("=== Diapason Pose Tweaker ===");
GUILayout.Label($"Shoulder: {_shoulderRotation}");
GUILayout.Label($"Elbow: {_elbowRotation}");
GUILayout.Label($"Wrist: {_wristRotation}");
GUILayout.Space(10);
GUILayout.Label("Tips:");
GUILayout.Label("• Shoulder X: + = down, - = up");
GUILayout.Label("• Shoulder Y: + = inward, - = outward");
GUILayout.Label("• Shoulder Z: + = twist out, - = twist in");
GUILayout.Label("• Elbow Y: + = bend out, - = bend in");
GUILayout.Label("• Wrist Z: rotation du diapason");
GUILayout.EndArea();
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8d1a1f500877b404fa6d23dff3bfa8c8
+32
View File
@@ -0,0 +1,32 @@
using UnityEngine;
[System.Serializable]
public class TapAnimationSettings
{
[Header("Tap Motion")]
[Tooltip("Elbow rotation during windup (degrees)")]
public float WindupRotation = 15f;
[Tooltip("Duration of windup (pull back)")]
public float WindupDuration = 0.1f;
[Tooltip("Duration of strike (forward snap)")]
public float StrikeDuration = 0.05f;
[Tooltip("Wrist snap rotation during strike (degrees)")]
public float WristSnapRotation = 10f;
[Header("Vibration Shake")]
[Tooltip("Shake intensity during vibration")]
public float ShakeIntensity = 2f;
[Tooltip("Shake speed (frequency)")]
public float ShakeSpeed = 30f;
}
public class EquippableTapSettings : MonoBehaviour
{
[SerializeField] private TapAnimationSettings _tapSettings = new TapAnimationSettings();
public TapAnimationSettings TapSettings => _tapSettings;
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b46af809fa8f34d49b3dec606a505c5e
+104 -11
View File
@@ -27,6 +27,9 @@ public class OctoIkArmsImproved : MonoBehaviour
public OctoIkLimb Arm;
public Vector3 RotationOffset;
public RaycastRig[] Raycasts;
[Header("Equipment System")]
public ArmEquipment Equipment;
[HideInInspector] public Vector3 TargetOriginPos;
[HideInInspector] public Quaternion TargetOriginRot;
@@ -47,6 +50,27 @@ public class OctoIkArmsImproved : MonoBehaviour
PoleOriginPos = Arm.Pole.localPosition;
}
}
if (Equipment != null)
{
Equipment.Initialize();
}
}
public bool IsEnvironmentalIkActive()
{
if (Equipment == null)
return Enabled;
return Enabled && Equipment.State == ArmState.Environmental;
}
public float GetEnvironmentalIkWeight()
{
if (Equipment == null)
return 1f;
return Equipment.IkWeight;
}
}
@@ -148,6 +172,19 @@ public class OctoIkArmsImproved : MonoBehaviour
PerformRaycasts();
FindNearestHits();
UpdateArmPositions();
UpdateEquippedPoses();
}
private void UpdateEquippedPoses()
{
for (int i = 0; i < _arms.Length; i++)
{
ArmRig armRig = _arms[i];
if (armRig.Equipment != null)
{
armRig.Equipment.UpdateEquippedPose();
}
}
}
// Cast all configured raycasts and store results
@@ -157,7 +194,7 @@ public class OctoIkArmsImproved : MonoBehaviour
{
ArmRig armRig = _arms[i];
if (!armRig.Enabled || armRig.Raycasts == null)
if (!armRig.IsEnvironmentalIkActive() || armRig.Raycasts == null)
continue;
for (int u = 0; u < armRig.Raycasts.Length; u++)
@@ -247,24 +284,23 @@ public class OctoIkArmsImproved : MonoBehaviour
{
ArmRig armRig = _arms[i];
if (armRig.Arm == null || armRig.Arm.Target == null) continue;
if (!armRig.IsEnvironmentalIkActive())
continue;
RaycastInfos raycastInfos = _nearestHitRaycasts[i];
// Default to origin position/rotation
Vector3 targetPos = armRig.TargetOriginPos;
Quaternion targetRot = armRig.TargetOriginRot;
bool shouldStick = false;
// Check if we should stick to surface
if (raycastInfos.HasHit && _noHitFrameCount[i] < _settings.StabilityFrames)
{
if (IsValidSurface(raycastInfos, i))
{
// Calculate target position on surface
targetPos = armRig.Arm.Target.parent.InverseTransformPoint(raycastInfos.Position);
// Calculate target rotation aligned to surface
targetRot = Quaternion.LookRotation(
-armRig.Arm.Target.parent.InverseTransformDirection(raycastInfos.Normal),
transform.up
@@ -274,12 +310,10 @@ public class OctoIkArmsImproved : MonoBehaviour
}
}
// Smooth stickiness transition
float targetStickiness = shouldStick ? 1f : 0f;
float stickinessSpeed = shouldStick ? _settings.StickSpeed : _settings.ReleaseSpeed;
_currentStickiness[i] = Mathf.MoveTowards(_currentStickiness[i], targetStickiness, stickinessSpeed * Time.deltaTime);
// Apply distance-based stickiness factor (hysteresis)
float distanceFactor = 0f;
if (shouldStick && raycastInfos.HasHit)
{
@@ -287,17 +321,14 @@ public class OctoIkArmsImproved : MonoBehaviour
distanceFactor = Mathf.Clamp01(distanceFactor);
}
float finalStickiness = _currentStickiness[i] * distanceFactor;
float finalStickiness = _currentStickiness[i] * distanceFactor * armRig.GetEnvironmentalIkWeight();
// Calculate interpolation speeds
float posSpeed = Mathf.Lerp(_settings.ReleaseSpeed, _settings.StickSpeed, finalStickiness);
float rotSpeed = _settings.RotationSpeed * Mathf.Deg2Rad;
// Exponential smoothing for natural movement
float tPos = 1f - Mathf.Exp(-posSpeed * Time.deltaTime);
float tRot = 1f - Mathf.Exp(-rotSpeed * Time.deltaTime);
// Apply smooth interpolation
armRig.Arm.Target.localPosition = Vector3.Lerp(armRig.Arm.Target.localPosition, targetPos, tPos);
armRig.Arm.Target.localRotation = Quaternion.Slerp(armRig.Arm.Target.localRotation, targetRot, tRot);
}
@@ -327,4 +358,66 @@ public class OctoIkArmsImproved : MonoBehaviour
return true;
}
public void EquipObjectOnArm(int armIndex, GameObject objectToEquip, System.Action onComplete = null)
{
if (armIndex < 0 || armIndex >= _arms.Length)
{
Debug.LogError($"[OctoIkArms] Invalid arm index: {armIndex}");
return;
}
ArmRig armRig = _arms[armIndex];
if (armRig.Equipment == null)
{
Debug.LogError($"[OctoIkArms] Arm {armIndex} has no Equipment system configured!");
return;
}
armRig.Equipment.StartTransitionToEquipped(objectToEquip, onComplete);
}
public void UnequipObjectFromArm(int armIndex, System.Action onComplete = null)
{
if (armIndex < 0 || armIndex >= _arms.Length)
{
Debug.LogError($"[OctoIkArms] Invalid arm index: {armIndex}");
return;
}
ArmRig armRig = _arms[armIndex];
if (armRig.Equipment == null)
{
Debug.LogError($"[OctoIkArms] Arm {armIndex} has no Equipment system configured!");
return;
}
armRig.Equipment.StartTransitionToEnvironmental(onComplete);
}
public ArmState GetArmState(int armIndex)
{
if (armIndex < 0 || armIndex >= _arms.Length)
return ArmState.Environmental;
if (_arms[armIndex].Equipment == null)
return ArmState.Environmental;
return _arms[armIndex].Equipment.State;
}
public bool IsArmInEnvironmentalMode(int armIndex)
{
return GetArmState(armIndex) == ArmState.Environmental;
}
public ArmEquipment GetArmEquipment(int armIndex)
{
if (armIndex < 0 || armIndex >= _arms.Length)
return null;
return _arms[armIndex].Equipment;
}
}
@@ -11,7 +11,7 @@ GameObject:
- component: {fileID: 3279932207826154136}
- component: {fileID: 1111284075867638658}
- component: {fileID: 6070160908100218527}
m_Layer: 0
m_Layer: 9
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -99,7 +99,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4721786510254652090}
m_Layer: 0
m_Layer: 9
m_Name: Render
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -133,7 +133,7 @@ GameObject:
- component: {fileID: 5755410889840572423}
- component: {fileID: 196559139152754184}
- component: {fileID: 7881895566796712951}
m_Layer: 0
m_Layer: 9
m_Name: SoundEmitter
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -244,6 +244,10 @@ PrefabInstance:
propertyPath: m_Name
value: DiapasonParticles
objectReference: {fileID: 0}
- target: {fileID: 1124780566057055841, guid: 8bb34a961d0969644bdd7a29960b46c9, type: 3}
propertyPath: m_Layer
value: 9
objectReference: {fileID: 0}
- target: {fileID: 1134716054066844273, guid: 8bb34a961d0969644bdd7a29960b46c9, type: 3}
propertyPath: m_LocalScale.x
value: 5
@@ -31,6 +31,37 @@ Transform:
m_Children: []
m_Father: {fileID: 8725966219179855439}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1303494181593144014
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8695354205568494894}
m_Layer: 0
m_Name: DetectionPalm
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8695354205568494894
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1303494181593144014}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.003, y: 0.0623, z: 0.0074}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1846451716686024273}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2101508725665932610
GameObject:
m_ObjectHideFlags: 0
@@ -44,6 +75,7 @@ GameObject:
- component: {fileID: 6053283114444666027}
- component: {fileID: 6989128982853398086}
- component: {fileID: 522399111239992785}
- component: {fileID: 3700193918383472175}
m_Layer: 0
m_Name: Camera Player
m_TagString: MainCamera
@@ -99,7 +131,7 @@ Camera:
height: 1
near clip plane: 0.1
far clip plane: 1000
field of view: 80
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: 0
@@ -148,7 +180,7 @@ MonoBehaviour:
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
@@ -186,6 +218,84 @@ MonoBehaviour:
serializedVersion: 2
m_Bits: 8
_raycastInterval: 0
--- !u!114 &3700193918383472175
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2101508725665932610}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6ed4b22b4be6bbe49a67cbe552c633e1, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.UI.DialogueBlurEffectURP
_globalVolume: {fileID: 0}
_gaussianStart: 0
_gaussianEnd: 15
_maxGaussianRadius: 4
_startPostExposure: 0
_targetPostExposure: 0.3
_fadeDuration: 1
_fadeCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 2
outSlope: 2
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
_dialogueLayers:
serializedVersion: 2
m_Bits: 64
_autoCreateDialogueCamera: 1
--- !u!1 &2879350702633194151
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 149218823560050265}
m_Layer: 0
m_Name: DetectionIndex
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &149218823560050265
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2879350702633194151}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1299817032685235492}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &4625798697874999476
GameObject:
m_ObjectHideFlags: 0
@@ -217,6 +327,37 @@ Transform:
m_Children: []
m_Father: {fileID: 4440040250278121308}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5569340221164642838
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 567066763639842942}
m_Layer: 0
m_Name: DiapasonSocket
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &567066763639842942
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5569340221164642838}
serializedVersion: 2
m_LocalRotation: {x: 0.14794564, y: 0.42486653, z: -0.89259064, w: 0.029705252}
m_LocalPosition: {x: 0.0545, y: -0.0197, z: 0.0816}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8537149938782507319}
m_LocalEulerAnglesHint: {x: 50.108, y: 338.133, z: 173.493}
--- !u!1 &5575782855984327677
GameObject:
m_ObjectHideFlags: 0
@@ -249,7 +390,6 @@ Transform:
m_Children:
- {fileID: 1836339402272228918}
- {fileID: 1175390396199967368}
- {fileID: 1104299543543969252}
m_Father: {fileID: 8725966219179855439}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &986184075687059205
@@ -278,11 +418,12 @@ GameObject:
- component: {fileID: 688176918831081180}
- component: {fileID: 3522630547589622128}
- component: {fileID: 493263706218074437}
- component: {fileID: 2525145087024189396}
- component: {fileID: 738317799072394575}
- component: {fileID: 3622123650942162330}
- component: {fileID: 4152409555847978467}
- component: {fileID: 6849123884232344894}
- component: {fileID: 4281753130586762125}
- component: {fileID: 663333287375164531}
- component: {fileID: 2301728592307354479}
m_Layer: 0
m_Name: OctoPlayerFP
m_TagString: Player
@@ -390,7 +531,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: e05e5ee4f09d55d4a93324fe0eb85d6e, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.CameraEffects
Settings: {fileID: 0}
Settings: {fileID: 11400000, guid: 28f72f5bbd71f384a86c547567dbb5bf, type: 2}
--- !u!114 &493263706218074437
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -404,7 +545,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.CameraControl.CameraPanController
_defaultSettings: {fileID: 11400000, guid: 9973a518f73c3c1489819494e37d0980, type: 2}
--- !u!114 &2525145087024189396
--- !u!114 &738317799072394575
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -413,54 +554,19 @@ MonoBehaviour:
m_GameObject: {fileID: 8162540767767967414}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2094bd9c6f72e5b4cadf430f4d70f8f6, type: 3}
m_Script: {fileID: 11500000, guid: 46c1f473fbd3cac4397aabaa76d18357, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.DiapasonListeningHandler
_diapasonObject: {fileID: 4171827204873703387}
_diapasonAnimator: {fileID: 2521987284762225689}
_listeningRange: 5
_listenableLayers:
serializedVersion: 2
m_Bits: 0
_concentrationDuration: 1
_breathInDuration: 0.5
_diapasonTweenDuration: 0.3
_diapasonHideOffset: -0.5
_diapasonTweenCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
_vibrationDuration: 15
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.DiapasonListeningHandlerV2
_equipmentManager: {fileID: 2301728592307354479}
_cameraPanController: {fileID: 493263706218074437}
_disablePlayerMovementDuringListen: 1
_enablePanMode: 1
_vignetteIntensity: 0.5
_vignetteEffect: {fileID: 3622123650942162330}
_handTouchFeedback: {fileID: 0}
_diapasonParticles: {fileID: 8433960879374805761}
_breathInClip: {fileID: 8300000, guid: 091b6df1c99cbd647bce921a5ba7c1af, type: 3}
_diapasonTapClip: {fileID: 8300000, guid: 99100d62c8b5d264f8694516673a9eeb, type: 3}
_diapasonTapVolume: 0.3
_ambientAttenuationAmount: 0.3
_audioFadeDuration: 0.5
_touchDistance: 2
_breathInVolume: 1
_concentrationDuration: 1
_breathInDuration: 0.5
--- !u!114 &3622123650942162330
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -502,11 +608,11 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.DetectiveBoard.DetectiveBoardController
_boardCameraPanSettings: {fileID: 11400000, guid: f176d1f8c15496946994170f1b633061, type: 2}
_activationRange: 2
_activationRange: 10
_boardLayer:
serializedVersion: 2
m_Bits: 128
--- !u!114 &4281753130586762125
--- !u!114 &663333287375164531
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -515,13 +621,69 @@ MonoBehaviour:
m_GameObject: {fileID: 8162540767767967414}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39b78978d656e894ea455342398ef8ba, type: 3}
m_Script: {fileID: 11500000, guid: d47a9ebc2bd5f9345ad873a400c3d8bf, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.HandTouchFeedback
_feedbackImage: {fileID: 0}
_readyColor: {r: 0, g: 1, b: 0, a: 1}
_pulseSpeed: 2
_pulseIntensity: 0.3
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.Player
--- !u!114 &2301728592307354479
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8162540767767967414}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 38b80731eb88f834ab3d79a566e40b48, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::DiapasonEquipmentManager
_armsSystem: {fileID: 147364745632062440}
_diapasonPrefab: {fileID: 8689584738786529861, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
_equipmentArmIndex: 1
_soundEmitterLayer:
serializedVersion: 2
m_Bits: 512
_detectionRadius: 0.15
_detectionPoints:
- {fileID: 8695354205568494894}
- {fileID: 149218823560050265}
- {fileID: 4703953626186906845}
_contactFeedbackPrefab: {fileID: 0}
_vibratingBoolParam: IsVibrating
_tapTriggerParam: Tap
_tapSound: {fileID: 8300000, guid: 99100d62c8b5d264f8694516673a9eeb, type: 3}
_tapVolume: 0.295
_vibrationDuration: 15
--- !u!1 &8249677106937945868
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4703953626186906845}
m_Layer: 0
m_Name: DetectionThumb
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4703953626186906845
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8249677106937945868}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 9153447681258289317}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &2564566619627430770
PrefabInstance:
m_ObjectHideFlags: 0
@@ -570,6 +732,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 880987313172909187, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: m_Enabled
value: 0
objectReference: {fileID: 0}
- target: {fileID: 880987313172909187, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: _leftArm.RotationOffset.x
value: 0
@@ -578,6 +744,10 @@ PrefabInstance:
propertyPath: _rightArm.RotationOffset.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 880987313172909187, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: _settings.LayerMask.m_Bits
value: 0
objectReference: {fileID: 0}
- target: {fileID: 899615586671794689, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: m_Name
value: Arms
@@ -622,6 +792,14 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 53.364
objectReference: {fileID: 0}
- target: {fileID: 2072281234324016569, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: m_LocalPosition.y
value: -0.179
objectReference: {fileID: 0}
- target: {fileID: 2072281234324016569, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: m_LocalPosition.z
value: 0.033
objectReference: {fileID: 0}
- target: {fileID: 2656140929319940858, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9961947
@@ -846,118 +1024,272 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.y
value: -30
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedComponents:
- {fileID: 880987313172909187, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 4181805340600085795, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
insertIndex: -1
addedObject: {fileID: 8695354205568494894}
- targetCorrespondingSourceObject: {fileID: 6670042068371528663, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
insertIndex: -1
addedObject: {fileID: 4703953626186906845}
- targetCorrespondingSourceObject: {fileID: 3575518857139523158, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
insertIndex: -1
addedObject: {fileID: 149218823560050265}
- targetCorrespondingSourceObject: {fileID: 6191648371188871749, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
insertIndex: -1
addedObject: {fileID: 567066763639842942}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 899615586671794689, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
insertIndex: -1
addedObject: {fileID: 147364745632062440}
m_SourcePrefab: {fileID: 100100000, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
--- !u!4 &1299817032685235492 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3575518857139523158, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1650708088870299847 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3854893824720358325, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1836099041693630956 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4245779101658522270, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1846451716686024273 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4181805340600085795, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1847598235320137047 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4194213612049569317, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &2639365499984405449 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 520098895314436283, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4716067031739800990
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 4440040250278121308}
m_Modifications:
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.w
value: 0.75190187
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.x
value: -0.13395086
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.y
value: -0.6397146
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.z
value: -0.08640652
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: -18.179
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: -81.182
objectReference: {fileID: 0}
- target: {fileID: 2315210776226997430, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 2.5
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalPosition.x
value: 0.78281003
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalPosition.y
value: -0.6192932
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalPosition.z
value: 1.138
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9926423
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalRotation.z
value: 0.121084325
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 13.909
objectReference: {fileID: 0}
- target: {fileID: 8689584738786529861, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
propertyPath: m_Name
value: Diapason
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
--- !u!4 &1104299543543969252 stripped
--- !u!4 &3379767859340007146 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5629947512209565818, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
m_PrefabInstance: {fileID: 4716067031739800990}
m_CorrespondingSourceObject: {fileID: 968400598511252888, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!95 &2521987284762225689 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 7173446854330675591, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
m_PrefabInstance: {fileID: 4716067031739800990}
m_PrefabAsset: {fileID: 0}
--- !u!1 &4171827204873703387 stripped
--- !u!1 &3452915509921429875 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8689584738786529861, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
m_PrefabInstance: {fileID: 4716067031739800990}
m_CorrespondingSourceObject: {fileID: 899615586671794689, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!198 &8433960879374805761 stripped
ParticleSystem:
m_CorrespondingSourceObject: {fileID: 3781237283850892959, guid: 2812cddb6de789b46ac9d640bb9ce410, type: 3}
m_PrefabInstance: {fileID: 4716067031739800990}
--- !u!114 &147364745632062440
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3452915509921429875}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 97777a4e863d974428be79c0d8a40883, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkArmsImproved
_leftArm:
Enabled: 1
Arm: {fileID: 6654999116103601949}
RotationOffset: {x: 0, y: 90, z: -15}
Raycasts:
- Root: {fileID: 1650708088870299847}
Distance: 0.7
- Root: {fileID: 5600837329012510017}
Distance: 0.5
- Root: {fileID: 4206463379806715489}
Distance: 0.6
Equipment:
IkLimb: {fileID: 0}
HandSocket: {fileID: 0}
ShoulderBone: {fileID: 0}
ElbowBone: {fileID: 0}
WristBone: {fileID: 0}
ShoulderRotationOffset: {x: 0, y: 0, z: 0}
ElbowRotationOffset: {x: 0, y: 0, z: 0}
WristRotationOffset: {x: 0, y: 0, z: 90}
RotationSpeed: 10
IkBlendDuration: 0.3
TransitionOffset: {x: 0.5, y: -0.3, z: 0.2}
TransitionOutDuration: 0.3
TransitionInDuration: 0.3
TransitionCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
TapWindupRotation: 15
TapWindupDuration: 0.1
TapStrikeDuration: 0.05
TapWristSnapRotation: 10
ShakeIntensity: 2
ShakeSpeed: 30
State: 0
OriginalTargetPosition: {x: 0, y: 0, z: 0}
OriginalTargetRotation: {x: 0, y: 0, z: 0, w: 0}
EquippedObject: {fileID: 0}
IkWeight: 1
OriginalShoulderRotation: {x: 0, y: 0, z: 0, w: 0}
OriginalElbowRotation: {x: 0, y: 0, z: 0, w: 0}
OriginalWristRotation: {x: 0, y: 0, z: 0, w: 0}
TargetOriginPos: {x: 0, y: 0, z: 0}
TargetOriginRot: {x: 0, y: 0, z: 0, w: 0}
PoleOriginPos: {x: 0, y: 0, z: 0}
_rightArm:
Enabled: 1
Arm: {fileID: 5109069407709118066}
RotationOffset: {x: 0, y: 90, z: -195}
Raycasts:
- Root: {fileID: 3379767859340007146}
Distance: 0.7
- Root: {fileID: 8991046984519786093}
Distance: 0.5
- Root: {fileID: 1836099041693630956}
Distance: 0.6
Equipment:
IkLimb: {fileID: 5109069407709118066}
HandSocket: {fileID: 567066763639842942}
ShoulderBone: {fileID: 1847598235320137047}
ElbowBone: {fileID: 6866065409512133221}
WristBone: {fileID: 8537149938782507319}
ShoulderRotationOffset: {x: -2.8, y: -5.9, z: -1.93}
ElbowRotationOffset: {x: 36.5, y: 24.3, z: -12}
WristRotationOffset: {x: 12.55, y: 31.8, z: 11.79}
RotationSpeed: 10
IkBlendDuration: 0.3
TransitionOffset: {x: 0, y: -0.7, z: 0}
TransitionOutDuration: 0.3
TransitionInDuration: 0.3
TransitionCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
TapWindupRotation: 15
TapWindupDuration: 0.1
TapStrikeDuration: 0.05
TapWristSnapRotation: 10
ShakeIntensity: 2
ShakeSpeed: 30
State: 0
OriginalTargetPosition: {x: 0, y: 0, z: 0}
OriginalTargetRotation: {x: 0, y: 0, z: 0, w: 0}
EquippedObject: {fileID: 0}
IkWeight: 1
OriginalShoulderRotation: {x: 0, y: 0, z: 0, w: 0}
OriginalElbowRotation: {x: 0, y: 0, z: 0, w: 0}
OriginalWristRotation: {x: 0, y: 0, z: 0, w: 0}
TargetOriginPos: {x: 0, y: 0, z: 0}
TargetOriginRot: {x: 0, y: 0, z: 0, w: 0}
PoleOriginPos: {x: 0, y: 0, z: 0}
_settings:
LayerMask:
serializedVersion: 2
m_Bits: 524800
StickStartDistance: 0.8
StickReleaseDistance: 1.2
StickSpeed: 10
ReleaseSpeed: 6
RotationSpeed: 360
AllowBothArms: 1
MaxSurfaceAngle: 60
StabilityFrames: 3
--- !u!4 &4206463379806715489 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1871096010787708179, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!114 &5109069407709118066 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7309382113032576256, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5a9786856021274fbe10be8b0cef721, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkLimb
--- !u!4 &5600837329012510017 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7939001859543297587, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6654999116103601949 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 9208847140532743279, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5a9786856021274fbe10be8b0cef721, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkLimb
--- !u!4 &6866065409512133221 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8997631150325690647, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8537149938782507319 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6191648371188871749, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8991046984519786093 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6868471396772723999, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
--- !u!4 &9153447681258289317 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6670042068371528663, guid: 73480b78f75094a4da6b76dedb392ae9, type: 3}
m_PrefabInstance: {fileID: 2564566619627430770}
m_PrefabAsset: {fileID: 0}
@@ -27,7 +27,7 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: {x: -62.351, y: 89.774, z: -89.911}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
@@ -36,7 +36,7 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: {x: -90, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
@@ -62,16 +62,16 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.23333333
time: 0.06666667
value: {x: 0, y: 0.055, z: 0}
inSlope: {x: 0, y: 0.23769715, z: 0}
outSlope: {x: 0, y: 0.23769715, z: 0}
inSlope: {x: 0, y: 0.88287514, z: 0}
outSlope: {x: 0, y: 0.88287514, z: 0}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: {x: 0.053, y: 0.1030021, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
@@ -80,7 +80,7 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: {x: 0, y: 0, z: 0}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
@@ -126,7 +126,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.78333336
m_StopTime: 0.15
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
@@ -156,7 +156,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.23333333
time: 0.06666667
value: 0
inSlope: 0
outSlope: 0
@@ -165,7 +165,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: 0.053
inSlope: 0
outSlope: 0
@@ -174,7 +174,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: 0
inSlope: 0
outSlope: 0
@@ -204,16 +204,16 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.23333333
time: 0.06666667
value: 0.055
inSlope: 0.23769715
outSlope: 0.23769715
inSlope: 0.88287514
outSlope: 0.88287514
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: 0.1030021
inSlope: 0
outSlope: 0
@@ -222,7 +222,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: 0
inSlope: 0
outSlope: 0
@@ -252,7 +252,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.23333333
time: 0.06666667
value: 0
inSlope: 0
outSlope: 0
@@ -261,7 +261,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: 0
inSlope: 0
outSlope: 0
@@ -270,7 +270,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: 0
inSlope: 0
outSlope: 0
@@ -300,7 +300,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: -62.351
inSlope: 0
outSlope: 0
@@ -309,7 +309,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: -90
inSlope: 0
outSlope: 0
@@ -339,7 +339,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: 89.774
inSlope: 0
outSlope: 0
@@ -348,7 +348,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: 0
inSlope: 0
outSlope: 0
@@ -378,7 +378,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.43333334
time: 0.11666667
value: -89.911
inSlope: 0
outSlope: 0
@@ -387,7 +387,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.78333336
time: 0.15
value: 0
inSlope: 0
outSlope: 0
@@ -56,14 +56,14 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2804686510863457871}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0.13395086, y: -0.6397146, z: -0.08640652, w: 0.75190187}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6952011244025097897}
m_Father: {fileID: 5629947512209565818}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -18.179, y: -81.182, z: 2.5}
--- !u!1 &5030950371277861040
GameObject:
m_ObjectHideFlags: 0
@@ -182,8 +182,8 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_LocalScale: {x: 0.35, y: 0.35, z: 0.35}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 2315210776226997430}
m_Father: {fileID: 0}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9df0cb56bbf72da4d8867c0762b21056
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5564aaa81c1b4d24eb35804793f8b916
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1c1241bed4f53a847b58c99c7d2bca65
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8484eca66f8f05d4794aac4ff9bb8996
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dcf218691e25a7848a7bc4ea303abeeb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7073d0f7ab262c14aad8f4b36590c806
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -266,11 +266,6 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a6fb413fb2bce224e89bd24011beb66a, type: 3}
--- !u!4 &68298035 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5600837329012510017, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!1 &71310880 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 893980407258203480, guid: 69f9e42d2acbf0344981fcdffd02d588, type: 3}
@@ -467,11 +462,6 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 5831650301161165405, guid: 69f9e42d2acbf0344981fcdffd02d588, type: 3}
m_PrefabInstance: {fileID: 102351984}
m_PrefabAsset: {fileID: 0}
--- !u!4 &113699317 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4206463379806715489, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!43 &183470776
Mesh:
m_ObjectHideFlags: 0
@@ -955,63 +945,6 @@ MonoBehaviour:
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!1 &421186517 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3452915509921429875, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!114 &421186520
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 421186517}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 97777a4e863d974428be79c0d8a40883, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkArmsImproved
_leftArm:
Enabled: 1
Arm: {fileID: 1146939765}
RotationOffset: {x: 0, y: 90, z: -15}
Raycasts:
- Root: {fileID: 1132572199}
Distance: 0.7
- Root: {fileID: 68298035}
Distance: 0.5
- Root: {fileID: 113699317}
Distance: 0.6
TargetOriginPos: {x: 0, y: 0, z: 0}
TargetOriginRot: {x: 0, y: 0, z: 0, w: 0}
PoleOriginPos: {x: 0, y: 0, z: 0}
_rightArm:
Enabled: 1
Arm: {fileID: 1630519643}
RotationOffset: {x: 0, y: 90, z: -195}
Raycasts:
- Root: {fileID: 916843296}
Distance: 0.7
- Root: {fileID: 1131491878}
Distance: 0.5
- Root: {fileID: 592552636}
Distance: 0.6
TargetOriginPos: {x: 0, y: 0, z: 0}
TargetOriginRot: {x: 0, y: 0, z: 0, w: 0}
PoleOriginPos: {x: 0, y: 0, z: 0}
_settings:
LayerMask:
serializedVersion: 2
m_Bits: 524288
StickStartDistance: 0.8
StickReleaseDistance: 1.2
StickSpeed: 10
ReleaseSpeed: 6
RotationSpeed: 360
AllowBothArms: 1
MaxSurfaceAngle: 60
StabilityFrames: 3
--- !u!1 &436513833 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8565038221404453269, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
@@ -1485,11 +1418,6 @@ GameObject:
m_CorrespondingSourceObject: {fileID: 2911834610010628020, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
m_PrefabInstance: {fileID: 5090177222934034458}
m_PrefabAsset: {fileID: 0}
--- !u!4 &592552636 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1836099041693630956, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!43 &632997879
Mesh:
m_ObjectHideFlags: 0
@@ -1839,11 +1767,6 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Tools.LanguageSwitcher
_currentLanguage: 1
--- !u!4 &916843296 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3379767859340007146, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!1 &962945644 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2846607907897423711, guid: 69f9e42d2acbf0344981fcdffd02d588, type: 3}
@@ -1969,7 +1892,7 @@ PrefabInstance:
objectReference: {fileID: 362502328}
- target: {fileID: 8209576767969738346, guid: 20e4ea3ceee86dd4ba3881425b65790d, type: 3}
propertyPath: m_VersionIndex
value: 5881
value: 5884
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
@@ -2040,27 +1963,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 5383576672370031505, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
m_PrefabInstance: {fileID: 5090177222934034458}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1131491878 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8991046984519786093, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1132572199 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1650708088870299847, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1146939765 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6654999116103601949, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5a9786856021274fbe10be8b0cef721, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkLimb
--- !u!224 &1182150969 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 3296430617892173296, guid: 69f9e42d2acbf0344981fcdffd02d588, type: 3}
@@ -2212,11 +2114,6 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 8886833518829962744, guid: f6df2f5ea61cfcb439be39356b1560fa, type: 3}
m_PrefabInstance: {fileID: 4079305652280607641}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1309830416 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8162540767767967414, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1310415455
GameObject:
m_ObjectHideFlags: 0
@@ -2250,58 +2147,6 @@ Transform:
- {fileID: 1254363909}
m_Father: {fileID: 1976498063}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1311426603 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 2101508725665932610, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1311426609
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1311426603}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6ed4b22b4be6bbe49a67cbe552c633e1, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.UI.DialogueBlurEffectURP
_globalVolume: {fileID: 832575518}
_gaussianStart: 0
_gaussianEnd: 15
_maxGaussianRadius: 4
_startPostExposure: 0
_targetPostExposure: 0.3
_fadeDuration: 1
_fadeCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 2
outSlope: 2
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
_dialogueLayers:
serializedVersion: 2
m_Bits: 64
_autoCreateDialogueCamera: 1
--- !u!1 &1321496847 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8240327778457960307, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
@@ -2807,61 +2652,45 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1976498063}
m_Modifications:
- target: {fileID: 1137016772337159218, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.x
value: -0.1
- target: {fileID: 147364745632062440, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _rightArm.Equipment.TapStrikeDuration
value: 0.05
objectReference: {fileID: 0}
- target: {fileID: 1847598235320137047, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.x
value: 0.1
- target: {fileID: 147364745632062440, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _rightArm.Equipment.TapWindupDuration
value: 0.18
objectReference: {fileID: 0}
- target: {fileID: 2525145087024189396, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _touchDistance
value: 4
- target: {fileID: 147364745632062440, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _rightArm.Equipment.TapWindupRotation
value: 35
objectReference: {fileID: 0}
- target: {fileID: 2525145087024189396, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _handTouchFeedback
value:
objectReference: {fileID: 1594544247}
- target: {fileID: 2525145087024189396, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _listenableLayers.m_Bits
value: 524289
- target: {fileID: 147364745632062440, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _rightArm.Equipment.TapWristSnapRotation
value: 30
objectReference: {fileID: 0}
- target: {fileID: 3435910664558456817, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_Enabled
value: 0
- target: {fileID: 738317799072394575, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _vignetteIntensity
value: 0.3
objectReference: {fileID: 0}
- target: {fileID: 3522630547589622128, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: Settings
value:
objectReference: {fileID: 11400000, guid: 28f72f5bbd71f384a86c547567dbb5bf, type: 2}
- target: {fileID: 3622123650942162330, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _listeningVolume
value:
objectReference: {fileID: 832575518}
- target: {fileID: 3666612565151794712, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: field of view
value: 60
objectReference: {fileID: 0}
- target: {fileID: 6849123884232344894, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _activationRange
value: 10
objectReference: {fileID: 0}
- target: {fileID: 6989128982853398086, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_RenderPostProcessing
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7525551330447586002, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.x
value: -0.1
- target: {fileID: 3622123650942162330, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _targetIntensity
value: 0.1
objectReference: {fileID: 0}
- target: {fileID: 3700193918383472175, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: _globalVolume
value:
objectReference: {fileID: 832575518}
- target: {fileID: 8162540767767967414, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_Name
value: OctoPlayerFP
objectReference: {fileID: 0}
- target: {fileID: 8725966219179855439, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.x
value: 20.9
value: 20.6
objectReference: {fileID: 0}
- target: {fileID: 8725966219179855439, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.y
@@ -2869,7 +2698,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8725966219179855439, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.z
value: 65.9
value: 41.6
objectReference: {fileID: 0}
- target: {fileID: 8725966219179855439, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalRotation.w
@@ -2899,133 +2728,16 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8933635129000347986, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
propertyPath: m_LocalPosition.x
value: 0.1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 8162540767767967414, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
insertIndex: -1
addedObject: {fileID: 1569966211}
- targetCorrespondingSourceObject: {fileID: 2101508725665932610, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
insertIndex: -1
addedObject: {fileID: 1311426609}
- targetCorrespondingSourceObject: {fileID: 3452915509921429875, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
insertIndex: -1
addedObject: {fileID: 421186520}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
--- !u!4 &1569966200 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8725966219179855439, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1569966211
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1309830416}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d47a9ebc2bd5f9345ad873a400c3d8bf, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.Player
--- !u!1 &1594544247
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1594544248}
- component: {fileID: 1594544250}
- component: {fileID: 1594544249}
- component: {fileID: 1594544251}
m_Layer: 0
m_Name: HandTouchFeedback
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1594544248
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1594544247}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1296540339}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -727, y: -296}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1594544249
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1594544247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1594544250
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1594544247}
m_CullTransparentMesh: 1
--- !u!114 &1594544251
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1594544247}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39b78978d656e894ea455342398ef8ba, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Unheimlich.Gameplay.Player.HandTouchFeedback
_feedbackImage: {fileID: 1594544249}
_readyColor: {r: 0, g: 1, b: 0, a: 1}
_pulseSpeed: 2
_pulseIntensity: 0.3
--- !u!1001 &1612978258
PrefabInstance:
m_ObjectHideFlags: 0
@@ -3127,17 +2839,6 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 488e1a9d28c26ff4fbd783ca2843ceb4, type: 3}
--- !u!114 &1630519643 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5109069407709118066, guid: 524ca0dabcf93844ea5f981410f44310, type: 3}
m_PrefabInstance: {fileID: 1569966199}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f5a9786856021274fbe10be8b0cef721, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::OctoIkLimb
--- !u!1 &1693053744
GameObject:
m_ObjectHideFlags: 0
@@ -5402,10 +5103,7 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 8886833518829962744, guid: f6df2f5ea61cfcb439be39356b1560fa, type: 3}
insertIndex: -1
addedObject: {fileID: 1594544248}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f6df2f5ea61cfcb439be39356b1560fa, type: 3}
--- !u!1001 &5090177222934034458
@@ -5519,7 +5217,7 @@ PrefabInstance:
- target: {fileID: 3142789394009655648, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
propertyPath: _handTouchFeedback
value:
objectReference: {fileID: 1594544247}
objectReference: {fileID: 0}
- target: {fileID: 3142789394009655648, guid: 92d3cde0c88c75f48a98d082c573338b, type: 3}
propertyPath: _maxCameraPanAngle
value: 8
@@ -0,0 +1,229 @@
using System.Collections;
using UnityEngine;
using Unheimlich.Audio;
using Unheimlich.Core;
using Unheimlich.Utility;
using Unheimlich.Gameplay.Player;
using Unheimlich.Gameplay.CameraControl;
using Unheimlich.Data.CameraSettings;
using InputManager = Unheimlich.Managers.InputManager;
namespace Unheimlich.Gameplay.Player
{
public class DiapasonListeningHandlerV2 : Singleton<DiapasonListeningHandlerV2>
{
[Header("Systems")]
[SerializeField] private DiapasonEquipmentManager _equipmentManager;
[SerializeField] private CameraPanController _cameraPanController;
[Header("Settings")]
[SerializeField] private bool _disablePlayerMovementDuringListen = true;
[SerializeField] private bool _enablePanMode = true;
[Header("Visual Feedback")]
[SerializeField] private float _vignetteIntensity = 0.5f;
[SerializeField] private ListeningVignetteEffect _vignetteEffect;
[Header("Audio")]
[SerializeField] private AudioClip _breathInClip;
[SerializeField] [Range(0f, 1f)] private float _breathInVolume = 1f;
[SerializeField] private float _concentrationDuration = 1f;
[SerializeField] private float _breathInDuration = 0.5f;
public bool IsListening { get; private set; }
public bool IsConcentrating { get; private set; }
private AudioSource _playerAudioSource;
private Coroutine _listeningCoroutine;
private CameraHeadBob _cameraHeadBob;
private CameraPanSettings _originalCameraSettings;
private AudioListenable _lastDetectedEmitter;
private bool _isFadingOut;
protected override void OnAwake()
{
_playerAudioSource = GetComponent<AudioSource>();
if (_playerAudioSource == null)
_playerAudioSource = gameObject.AddComponent<AudioSource>();
if (_cameraPanController == null)
{
_cameraPanController = GetComponent<CameraPanController>();
if (_cameraPanController == null)
{
Debug.LogWarning("[DiapasonV2] CameraPanController not found!");
}
}
if (_vignetteEffect == null)
{
_vignetteEffect = GetComponentInChildren<ListeningVignetteEffect>();
}
_cameraHeadBob = GetComponentInChildren<CameraHeadBob>();
if (_equipmentManager != null)
{
SubscribeToEquipmentEvents();
}
}
void OnDestroy()
{
if (_equipmentManager != null)
{
UnsubscribeFromEquipmentEvents();
}
}
private void SubscribeToEquipmentEvents()
{
}
private void UnsubscribeFromEquipmentEvents()
{
}
void Update()
{
var diapasonAction = InputManager.GetDiapasonAction();
if (diapasonAction != null && diapasonAction.WasPressedThisFrame())
{
if (!IsListening && !IsConcentrating)
{
StartListeningMode();
}
else if (IsListening || IsConcentrating)
{
StopListeningMode();
}
}
if (IsListening && _cameraPanController != null)
{
_cameraPanController.UpdatePan();
}
}
private void StartListeningMode()
{
if (_isFadingOut || _equipmentManager == null)
return;
if (_listeningCoroutine != null)
StopCoroutine(_listeningCoroutine);
_listeningCoroutine = StartCoroutine(ListeningSequence());
}
private IEnumerator ListeningSequence()
{
IsConcentrating = true;
InputManager.SetContext(InputManager.InputContext.Listening);
if (_disablePlayerMovementDuringListen && PlayerController.Instance?.Movement != null)
{
PlayerController.Instance.Movement.enabled = false;
}
_equipmentManager.EquipDiapason();
PlayBreathIn();
yield return new WaitForSeconds(_breathInDuration);
if (_cameraHeadBob != null)
{
float resetDuration = _concentrationDuration - _breathInDuration;
_cameraHeadBob.LerpToZero(resetDuration);
}
yield return new WaitForSeconds(_concentrationDuration - _breathInDuration);
IsConcentrating = false;
IsListening = true;
EnableVignette(true);
if (_enablePanMode && _cameraPanController != null)
{
_cameraPanController.SaveOriginalState();
_cameraPanController.StartPan();
}
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = false;
}
private void StopListeningMode()
{
if (_listeningCoroutine != null)
{
StopCoroutine(_listeningCoroutine);
_listeningCoroutine = null;
}
IsListening = false;
IsConcentrating = false;
_isFadingOut = true;
_equipmentManager.UnequipDiapason();
EnableVignette(false);
if (_enablePanMode && _cameraPanController != null)
{
_cameraPanController.StopPan();
_cameraPanController.ReturnToOriginalPosition(() =>
{
if (_originalCameraSettings != null)
{
_cameraPanController.Settings = _originalCameraSettings;
_originalCameraSettings = null;
}
if (_disablePlayerMovementDuringListen && PlayerController.Instance?.Movement != null)
{
PlayerController.Instance.Movement.enabled = true;
}
_isFadingOut = false;
});
}
else
{
if (_disablePlayerMovementDuringListen && PlayerController.Instance?.Movement != null)
{
PlayerController.Instance.Movement.enabled = true;
}
_isFadingOut = false;
}
InputManager.SetContext(InputManager.InputContext.Normal);
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void PlayBreathIn()
{
if (_breathInClip != null && _playerAudioSource != null)
{
_playerAudioSource.PlayOneShot(_breathInClip, _breathInVolume);
}
}
private void EnableVignette(bool enable)
{
if (_vignetteEffect == null)
return;
if (enable)
{
_vignetteEffect.SetIntensity(_vignetteIntensity);
}
_vignetteEffect.EnableVignette(enable);
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 46c1f473fbd3cac4397aabaa76d18357
@@ -94,14 +94,13 @@ namespace Unheimlich.Interactions.FloatingWords
_isEffectActive = true;
_scribbleTweenId = TweenHelper.AnimateMaterialFloat(
gameObject,
_scribbleMaterialInstance,
ProgressID,
0f,
1f,
scribbleDuration,
() => {
_scribbleTweenId = LeanTween.value(gameObject, 0f, 1f, scribbleDuration)
.setEase(LeanTweenType.easeInOutQuad)
.setOnUpdate((float val) => {
if (_scribbleMaterialInstance != null)
_scribbleMaterialInstance.SetFloat(ProgressID, val);
})
.setOnComplete(() => {
_scribbleTweenId = -1;
float ghostAlphaRatio = _ghostTextComponent != null ? (_originalGhostColor.a / _originalTextColor.a) : 0f;
@@ -126,63 +125,74 @@ namespace Unheimlich.Interactions.FloatingWords
})
.setOnComplete(() => {
_fadeTweenId = -1;
_isEffectActive = false;
}).id;
},
LeanTweenType.easeInOutQuad);
}).id;
}
public void ResetEffect()
{
if (!_overlayCreated || _scribbleOverlay == null)
{
_isEffectActive = false;
return;
}
bool overlayIsActive = _scribbleOverlay.gameObject.activeSelf;
if (!overlayIsActive)
{
_isEffectActive = false;
return;
}
CancelActiveTweens();
_isEffectActive = false;
if (_scribbleMaterialInstance != null)
{
float currentProgress = _scribbleMaterialInstance.GetFloat(ProgressID);
if (currentProgress > 0f)
{
_scribbleTweenId = TweenHelper.AnimateMaterialFloat(
gameObject,
_scribbleMaterialInstance,
ProgressID,
currentProgress,
0f,
0.3f,
() => {
_scribbleTweenId = -1;
if (_scribbleOverlay != null)
_scribbleOverlay.gameObject.SetActive(false);
},
LeanTweenType.easeOutQuad);
}
_scribbleTweenId = LeanTween.value(gameObject, currentProgress, 0f, 0.3f)
.setEase(LeanTweenType.easeOutQuad)
.setOnUpdate((float val) => {
if (_scribbleMaterialInstance != null)
_scribbleMaterialInstance.SetFloat(ProgressID, val);
})
.setOnComplete(() => {
_scribbleTweenId = -1;
if (_scribbleOverlay != null)
_scribbleOverlay.gameObject.SetActive(false);
}).id;
}
if (_textComponent != null)
{
float currentAlpha = _textComponent.color.a;
float ghostAlphaRatio = _ghostTextComponent != null ? (_originalGhostColor.a / _originalTextColor.a) : 0f;
if (currentAlpha < _originalTextColor.a)
{
float ghostAlphaRatio = _ghostTextComponent != null ? (_originalGhostColor.a / _originalTextColor.a) : 0f;
_fadeTweenId = TweenHelper.FadeText(
gameObject,
_textComponent,
_ghostTextComponent,
_originalTextColor.a,
0.3f,
ghostAlphaRatio,
() => { _fadeTweenId = -1; },
LeanTweenType.easeOutQuad);
}
_fadeTweenId = LeanTween.value(gameObject, currentAlpha, _originalTextColor.a, 0.3f)
.setEase(LeanTweenType.easeOutQuad)
.setOnUpdate((float val) => {
if (_textComponent != null)
{
_textComponent.color = _textComponent.color.WithAlpha(val);
}
if (_ghostTextComponent != null)
{
_ghostTextComponent.color = _ghostTextComponent.color.WithAlpha(val * ghostAlphaRatio);
}
if (_scribbleOverlay != null)
{
_scribbleOverlay.color = _scribbleOverlay.color.WithAlpha(val);
}
})
.setOnComplete(() => {
_fadeTweenId = -1;
}).id;
}
if (_scribbleOverlay != null)
{
_scribbleOverlay.color = _scribbleOverlay.color.WithAlpha(1f);
}
_isEffectActive = false;
}
private void CancelActiveTweens()