Display rope on client (We need to implement client prediction and reconciliation for rope)

This commit is contained in:
Sveske Juice 2024-02-29 15:41:53 +01:00
parent bbbe287c1d
commit 925934ccda
8 changed files with 275 additions and 48 deletions

View File

@ -19,3 +19,13 @@ MonoBehaviour:
SourcePrefabToOverride: {fileID: 0} SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0 SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0} OverridingTargetPrefab: {fileID: 0}
- Override: 0
Prefab: {fileID: 4736158799711156794, guid: 95a46812725b6db46a5dc3e853110b5e, type: 3}
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}
- Override: 0
Prefab: {fileID: 5991265243222894942, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
SourcePrefabToOverride: {fileID: 0}
SourceHashToOverride: 0
OverridingTargetPrefab: {fileID: 0}

View File

@ -0,0 +1,152 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4736158799711156794
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3817028170077760731}
- component: {fileID: 4590407122831754579}
- component: {fileID: 8963967235500975272}
- component: {fileID: -5174249022758144916}
- component: {fileID: -7862229988660046446}
m_Layer: 0
m_Name: RopePoint
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3817028170077760731
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4736158799711156794}
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: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!58 &4590407122831754579
CircleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4736158799711156794}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_Radius: 0.5
--- !u!50 &8963967235500975272
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4736158799711156794}
m_BodyType: 1
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDrag: 0
m_AngularDrag: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!114 &-5174249022758144916
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4736158799711156794}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 1634323294
InScenePlacedSourceGlobalObjectIdHash: 0
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 1
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 1
--- !u!114 &-7862229988660046446
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4736158799711156794}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
UseUnreliableDeltas: 0
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 0
SyncRotAngleY: 0
SyncRotAngleZ: 0
SyncScaleX: 0
SyncScaleY: 0
SyncScaleZ: 0
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
Interpolate: 1
SlerpPosition: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 95a46812725b6db46a5dc3e853110b5e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -9,10 +9,12 @@ GameObject:
serializedVersion: 6 serializedVersion: 6
m_Component: m_Component:
- component: {fileID: 144529238244638330} - component: {fileID: 144529238244638330}
- component: {fileID: 2894273998966960381}
- component: {fileID: 7717684785049474632} - component: {fileID: 7717684785049474632}
- component: {fileID: 901761791259710742} - component: {fileID: 901761791259710742}
- component: {fileID: 4976294692568481572} - component: {fileID: 4976294692568481572}
- component: {fileID: 2066655509941542230} - component: {fileID: 2066655509941542230}
- component: {fileID: 7670104141912458081}
m_Layer: 0 m_Layer: 0
m_Name: Rope m_Name: Rope
m_TagString: Untagged m_TagString: Untagged
@ -35,6 +37,27 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2894273998966960381
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5991265243222894942}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
m_Name:
m_EditorClassIdentifier:
GlobalObjectIdHash: 3972580189
InScenePlacedSourceGlobalObjectIdHash: 1619090677
AlwaysReplicateAsRoot: 0
SynchronizeTransform: 1
ActiveSceneSynchronization: 0
SceneMigrationSynchronization: 1
SpawnWithObservers: 1
DontDestroyWithOwner: 0
AutoObjectParentSync: 0
--- !u!114 &7717684785049474632 --- !u!114 &7717684785049474632
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -91,10 +114,8 @@ MonoBehaviour:
m_RotationOrder: 4 m_RotationOrder: 4
ropeMaxLength: 50 ropeMaxLength: 50
ropeMinLength: 20 ropeMinLength: 20
colliderPrefab: {fileID: 4736158799711156794, guid: 95a46812725b6db46a5dc3e853110b5e, type: 3}
colliderTag: Rope colliderTag: Rope
colliderLayer:
serializedVersion: 2
m_Bits: 64
ropeCollidersParent: {fileID: 144529238244638330} ropeCollidersParent: {fileID: 144529238244638330}
lineRenderer: {fileID: 901761791259710742} lineRenderer: {fileID: 901761791259710742}
pullAnimationOvershootThreshold: 0.2 pullAnimationOvershootThreshold: 0.2
@ -312,3 +333,34 @@ AudioSource:
m_PreInfinity: 2 m_PreInfinity: 2
m_PostInfinity: 2 m_PostInfinity: 2
m_RotationOrder: 4 m_RotationOrder: 4
--- !u!114 &7670104141912458081
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5991265243222894942}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e96cb6065543e43c4a752faaa1468eb1, type: 3}
m_Name:
m_EditorClassIdentifier:
UseUnreliableDeltas: 0
SyncPositionX: 1
SyncPositionY: 1
SyncPositionZ: 1
SyncRotAngleX: 0
SyncRotAngleY: 0
SyncRotAngleZ: 0
SyncScaleX: 0
SyncScaleY: 0
SyncScaleZ: 0
PositionThreshold: 0.001
RotAngleThreshold: 0.01
ScaleThreshold: 0.01
UseQuaternionSynchronization: 0
UseQuaternionCompression: 0
UseHalfFloatPrecision: 0
InLocalSpace: 0
Interpolate: 1
SlerpPosition: 0

View File

@ -3669,10 +3669,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: m_AddedGameObjects: []
- targetCorrespondingSourceObject: {fileID: 3032075919872812610, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3}
insertIndex: -1
addedObject: {fileID: 4910321061857220296}
m_AddedComponents: m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 809911508645467208, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3} - targetCorrespondingSourceObject: {fileID: 809911508645467208, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3}
insertIndex: -1 insertIndex: -1
@ -3684,11 +3681,6 @@ PrefabInstance:
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1683288374126251336} addedObject: {fileID: 1683288374126251336}
m_SourcePrefab: {fileID: 100100000, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3} m_SourcePrefab: {fileID: 100100000, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3}
--- !u!4 &1683288374126251322 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3032075919872812610, guid: ec5007446d8bbca48bf02b3a7e752da1, type: 3}
m_PrefabInstance: {fileID: 1683288374126251321}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1683288374126251323 --- !u!114 &1683288374126251323
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3869,7 +3861,7 @@ PrefabInstance:
serializedVersion: 2 serializedVersion: 2
m_Modification: m_Modification:
serializedVersion: 3 serializedVersion: 3
m_TransformParent: {fileID: 1683288374126251322} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: 144529238244638330, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3} - target: {fileID: 144529238244638330, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -3911,6 +3903,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2894273998966960381, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
propertyPath: GlobalObjectIdHash
value: 3972580189
objectReference: {fileID: 0}
- target: {fileID: 5991265243222894942, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3} - target: {fileID: 5991265243222894942, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Rope value: Rope
@ -3920,11 +3916,6 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
--- !u!4 &4910321061857220296 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 144529238244638330, guid: 0248db69242a3dd47898c6742b6c9f60, type: 3}
m_PrefabInstance: {fileID: 4910321061857220295}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5796191506433166633 --- !u!1001 &5796191506433166633
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -4799,6 +4790,7 @@ SceneRoots:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_Roots: m_Roots:
- {fileID: 1683288374126251321} - {fileID: 1683288374126251321}
- {fileID: 4910321061857220295}
- {fileID: 1536317696} - {fileID: 1536317696}
- {fileID: 4158834148864819266} - {fileID: 4158834148864819266}
- {fileID: 1600052934} - {fileID: 1600052934}

View File

@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2 --- !u!104 &2
RenderSettings: RenderSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 9 serializedVersion: 10
m_Fog: 0 m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3 m_FogMode: 3
@ -44,7 +44,6 @@ RenderSettings:
LightmapSettings: LightmapSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 12 serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings: m_GISettings:
serializedVersion: 2 serializedVersion: 2
m_BounceScale: 1 m_BounceScale: 1
@ -67,9 +66,6 @@ LightmapSettings:
m_LightmapParameters: {fileID: 0} m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1 m_LightmapsBakeMode: 1
m_TextureCompression: 1 m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2 m_ReflectionCompression: 2
m_MixedBakeMode: 2 m_MixedBakeMode: 2
m_BakeBackend: 1 m_BakeBackend: 1
@ -97,7 +93,7 @@ LightmapSettings:
m_ExportTrainingData: 0 m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4 m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0} m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0} m_LightingSettings: {fileID: 0}
--- !u!196 &4 --- !u!196 &4
NavMeshSettings: NavMeshSettings:
@ -464,15 +460,17 @@ MonoBehaviour:
m_lineSpacingMax: 0 m_lineSpacingMax: 0
m_paragraphSpacing: 0 m_paragraphSpacing: 0
m_charWidthMaxAdj: 0 m_charWidthMaxAdj: 0
m_enableWordWrapping: 1 m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4 m_wordWrappingRatios: 0.4
m_overflowMode: 0 m_overflowMode: 0
m_linkedTextComponent: {fileID: 0} m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0} parentLinkedComponent: {fileID: 0}
m_enableKerning: 1 m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0 m_enableExtraPadding: 0
checkPaddingRequired: 0 checkPaddingRequired: 0
m_isRichText: 1 m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1 m_parseCtrlCharacters: 1
m_isOrthographic: 1 m_isOrthographic: 1
m_isCullingEnabled: 0 m_isCullingEnabled: 0
@ -679,15 +677,17 @@ MonoBehaviour:
m_lineSpacingMax: 0 m_lineSpacingMax: 0
m_paragraphSpacing: 0 m_paragraphSpacing: 0
m_charWidthMaxAdj: 0 m_charWidthMaxAdj: 0
m_enableWordWrapping: 1 m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4 m_wordWrappingRatios: 0.4
m_overflowMode: 0 m_overflowMode: 0
m_linkedTextComponent: {fileID: 0} m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0} parentLinkedComponent: {fileID: 0}
m_enableKerning: 1 m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_enableExtraPadding: 0 m_enableExtraPadding: 0
checkPaddingRequired: 0 checkPaddingRequired: 0
m_isRichText: 1 m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1 m_parseCtrlCharacters: 1
m_isOrthographic: 1 m_isOrthographic: 1
m_isCullingEnabled: 0 m_isCullingEnabled: 0
@ -952,15 +952,17 @@ MonoBehaviour:
m_lineSpacingMax: 0 m_lineSpacingMax: 0
m_paragraphSpacing: 0 m_paragraphSpacing: 0
m_charWidthMaxAdj: 0 m_charWidthMaxAdj: 0
m_enableWordWrapping: 1 m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4 m_wordWrappingRatios: 0.4
m_overflowMode: 0 m_overflowMode: 0
m_linkedTextComponent: {fileID: 0} m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0} parentLinkedComponent: {fileID: 0}
m_enableKerning: 1 m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0 m_enableExtraPadding: 0
checkPaddingRequired: 0 checkPaddingRequired: 0
m_isRichText: 1 m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1 m_parseCtrlCharacters: 1
m_isOrthographic: 1 m_isOrthographic: 1
m_isCullingEnabled: 0 m_isCullingEnabled: 0
@ -1270,9 +1272,8 @@ Light:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1886719419} m_GameObject: {fileID: 1886719419}
m_Enabled: 1 m_Enabled: 1
serializedVersion: 10 serializedVersion: 11
m_Type: 1 m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1 m_Intensity: 1
m_Range: 10 m_Range: 10

View File

@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
[System.Serializable]
public class Rope public class Rope
{ {
public List<Point> points { get ; private set; } public List<Point> points { get ; private set; }

View File

@ -54,6 +54,7 @@ public class RopeSimulator : NetworkBehaviour
public float ropeMaxLength, ropeMinLength; public float ropeMaxLength, ropeMinLength;
[Header("Rope Colliders")] [Header("Rope Colliders")]
[SerializeField] GameObject colliderPrefab;
[SerializeField] string colliderTag = "Rope"; [SerializeField] string colliderTag = "Rope";
[SerializeField] Transform ropeCollidersParent; [SerializeField] Transform ropeCollidersParent;
@ -254,30 +255,44 @@ public class RopeSimulator : NetworkBehaviour
foreach (var point in rope.points) foreach (var point in rope.points)
{ {
GameObject ropeCollider = new GameObject("Rope Collider"); GameObject ropeCollider = Instantiate(colliderPrefab);
ropeCollider.tag = colliderTag; var ropeNO = ropeCollider.GetComponent<NetworkObject>();
ropeCollider.transform.parent = ropeCollidersParent; ropeNO.Spawn();
ropeNO.TrySetParent(ropeCollidersParent);
ropeCollider.transform.position = point.position; ropeCollider.transform.position = point.position;
ropeCollider.tag = colliderTag;
ropeCollider.layer = LayerMask.NameToLayer("Rope"); ropeCollider.layer = LayerMask.NameToLayer("Rope");
if (!IsClient) // Only coliders for the server/host ropeCollider.GetComponent<CircleCollider2D>().radius = ropeRadius;
{ var rigidBody = ropeCollider.GetComponent<Rigidbody2D>();
var colliderComponent = ropeCollider.AddComponent<CircleCollider2D>();
colliderComponent.radius = ropeRadius;
}
var rigidBody = ropeCollider.AddComponent<Rigidbody2D>();
rigidBody.isKinematic = true; rigidBody.isKinematic = true;
} }
Debug.Break();
}
private void DrawRope()
{
// Update line renderer
List<Vector3> positions = new List<Vector3>(ropeCollidersParent.childCount);
for (int i = 0; i < ropeCollidersParent.childCount; i++)
{
positions.Add(ropeCollidersParent.GetChild(i).position);
}
lineRenderer.positionCount = positions.Count;
lineRenderer.SetPositions(positions.ToArray());
} }
private void Update() private void Update()
{ {
if (!IsInitialized)
return;
if (!ShouldSimulate) if (!ShouldSimulate)
{
DrawRope();
return;
}
if (!IsInitialized)
return; return;
colliderToSquezeForce.Clear(); colliderToSquezeForce.Clear();
@ -319,11 +334,6 @@ public class RopeSimulator : NetworkBehaviour
squezeDamageReceiver.TakeSquezeDamage(collider.Value * squezeDamage * swingMultiplier); squezeDamageReceiver.TakeSquezeDamage(collider.Value * squezeDamage * swingMultiplier);
} }
// Update line renderer
var positions = rope.points.Select(p => new Vector3(p.position.x, p.position.y, 0f)).ToArray();
lineRenderer.positionCount = positions.Length;
lineRenderer.SetPositions(positions);
// Handle xy dampening on z gravity // Handle xy dampening on z gravity
foreach (var point in rope.points) foreach (var point in rope.points)
{ {
@ -332,6 +342,8 @@ public class RopeSimulator : NetworkBehaviour
Vector2 newXYPos = Vector2.MoveTowards(new Vector2(point.position.x, point.position.y), new Vector2(point.prevPosition.x, point.prevPosition.y), Mathf.Abs(point.position.z * xyGravityDampScalor)); Vector2 newXYPos = Vector2.MoveTowards(new Vector2(point.position.x, point.position.y), new Vector2(point.prevPosition.x, point.prevPosition.y), Mathf.Abs(point.position.z * xyGravityDampScalor));
point.position.Set(newXYPos.x, newXYPos.y, 0f); point.position.Set(newXYPos.x, newXYPos.y, 0f);
} }
DrawRope();
} }
private void PlayerPullAnimation(float overshoot) private void PlayerPullAnimation(float overshoot)