Frequently Asked Questions (FAQ)
Here are solutions to the most common questions encountered when simulating ropes and chains with Tensio.
⚛️ Physics & Simulation
Why is my rope vibrating or jittering?
- Root Cause: Extremely low compliance (
Compliance = 0.0) combined with few solver iterations (SubSteps < 6) or massive mass ratios can introduce numerical oscillation. - Resolution:
- Increase Sub Steps from
8to12or16inPhysics Settings. - Add a microscopic amount of compliance (e.g.
0.0001) instead of absolute zero. - Ensure that pinned GameObjects are updated during
FixedUpdate()rather thanUpdate().
- Increase Sub Steps from
My rope passes through objects without colliding. Why?
- Root Cause: Fast movement (tunneling), insufficient particle radius, or layer mask exclusion.
- Resolution:
- Verify the collider’s layer is checked in
RopeController> Collision Mask. - Slightly increase Particle Radius in
Physics Settings. - For critical obstacles (poles, characters, boxes), use Tensio’s Proxy Colliders (
RopeBoxProxy,RopeCapsuleProxy), which are mathematically immune to tunneling.
- Verify the collider’s layer is checked in
How do I make the rope completely rigid like a steel rod or pipe?
- Set Compliance to
0.0and increase Sub Steps to16. - Note that XPBD is specifically tuned for flexible dynamic bodies. For completely immovable steel bars, Unity’s standard Rigidbody joints or kinematic colliders may be more suitable.
⚡ Performance & Mobile
I have hundreds of ropes and framerates are dropping. What should I optimize?
- Enable Batching: Check Use Batching on all
RopeRendererandRopeChainRenderercomponents. This collapses hundreds of draw calls into single batches. - Add
RopeLODController: This provides the single highest performance gain by swapping distant 3D meshes for lightweight 2D billboard lines and suspending off-screen physics. - Tune Particle Counts: Background cables typically look great with only
8 – 12particles rather than40.
Does Tensio work on Mobile (iOS / Android) and standalone VR (Quest)?
- Yes. Because the core XPBD constraint solver is multi-threaded and compiled using Unity’s Burst Compiler, it runs with 0B GC allocation natively on ARM64 architectures.
- Recommended mobile settings: Keep
Particle Countbetween15 – 25, use Proxy Colliders, and enableRopeLODController.
🎮 Gameplay & Interaction
Can I attach a rope to a moving character or Ragdoll?
- Yes. Call
rope.PinParticle(index, characterBoneTransform, contactPoint). - If the attached GameObject has a
Rigidbody, Tensio automatically calculates reciprocal forces, allowing players to swing, climb, or pull attached objects.
How do I tether two separate objects together?
- Pin index
0to Object A usingrope.PinParticle(0, objectA.transform, objectA.transform.position). - Pin index
ParticleCount - 1to Object B usingrope.PinParticle(rope.ParticleCount - 1, objectB.transform, objectB.transform.position). - The rope will physically constrain the distance between both objects according to its resting length.
🎨 Visuals & Rendering
The rope texture appears stretched when winching. How do I fix it?
- When changing rope length dynamically via code or
RopeWinch, adjust the UV Offset property onRopeRendererproportionally to simulate continuous sliding across pulleys.
Can I save or bake the dynamic rope mesh into a permanent asset?
- Yes. Because
RopeRendererwrites into a standard UnityMesh, you can callAssetDatabase.CreateAsset(meshFilter.sharedMesh, "Assets/BakedRope.asset")in an editor script to save the resting posture as static scene geometry.