A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Made With Unity' started by reveriejake, Nov 19, 2009.
To find out details just go to:
Very cool, thanks for sharing! I will definitely have to give this a try later.
Here is what I think is a neat looking screenshot I made using the rope script... (not the best looking Normal Map on the floor for sure)
If you dont mind, I ask whoever is using the rope script to show there rope in action here!
I have fixed the error and included a couple new updates which include support for mesh collision on the rope and bump map support.
I still need to fix a few more things but I dont want to have to continue spending time if there is no intrest so post a response on the poll above.
I wants it! Give it to ussss!
Fixed error where the first joint is static. Now all joints rotate properly!
Just a note:
The 3D rope is VERY render intensive! I am working on a LOD system for it, but there are no guarantees on whether it will work so Here you go again and I hope I am helping and not being annoying with this
oo thanks. One question tho.. Can it be done so only 1 side of it is attached and other one is loose?
Say, for example I want to make it so char could grab rope and swing over, to do this I need to have one side of rope attached to rope holder and other one must not be attached to anything, it has to be loose.
Is it possible with this script?
yeah there are 2 variables called "startRestrained" (Green Gizmo) and "endRestrained" (Red Gizmo)...
If you make sure that "endRestrained" is unchecked and and the other is checked, then you should be good to go!
Woah thanks a lot! *leeches the code and runs off to check if it works*
This will be perfect for Swinging over trap on my Agility skill course I'm making for our Runescape project at the moment
I'll upload a nice high res rope texture with normal map for you people in a minute, if I can find it
Found it! Enjoy
Hmm.. I attached the rope script to empty game object, checked "Start restrained", unchecked "End restrained" and try to run it but it keeps giving me error that I need to attach gameobject to Target.. What do I need to assign as target if I want the end of rope to be loose?
I should have labeled that differently but assign the second end of your rope to "target"
so put in a second empty game object and assign it to target. At that point you should see the gizmos in the editor that will represent your rope.
Let me know if you need anything else!
ok it worked, thanks
Now to think how to add some rope effect to it so it would be "rope-ish" when collides with gameobject that is heavier. Now my char just bangs into it as if it was a wall or something
here is a video of a box bumping into the rope..
oh thats nice, would you mind making a small scene with the box bumping into the rope, making a unity package out of that scene and uploading here? That would be just brill!
Or is it already done and there's just something wrong with my character's weight?
I am assuming your character is using a rigidbody. What type of collider do you have on the rope?
Ok so I copy and pasted my code from this forum and noticed I forgot to update the TubeRenderer script in my last update, so I went ahead and did that which should fix any errors that popped up when you first used it.
And here is a demo project for you so you can see how to make it run into the rope and make it move, you can mess with the ropes mass and the players mass to get what you want. I think your just not getting enough Umph behind your plow so you might wanna move a little faster to hit it harder or increase your mass. Just need to play around with settings to get your desired effect.
You said that the rope is very render intensive. How render intensive, exactly? Our game utilizes a lot of wires placed by the player going around the level. Right now we are using Linerenderers for those, and that looks OK for wires...but our game also calls us to lay some pipes around the level, and I think linerenderers aren't good for that job. Tuberenderers might even look better for the wires, depending on performance.
The way our game works though, the player will lay one segment of the tube at a time by clicking on the walls...and those segments will be constrained to the walls unless something happens and breaks that constraint/breaks the pipe, in which case (hopefully), using your script will cause them to flail about.
So my questions I guess are of performance and constraint - can you constrain each segment of pipe using this script?
Render Intensive = 800FPS down to around 190FPS
EDIT: I just tried with 4 sides and around 12 joints and it was rendering with close to 300FPS in a scene like you see in the image below
But that also depends on the detail you put into it. Segment numbers, joint detail, bump maps, blah blah...
HA! You know what, I just this second made a scene with the tube flopping around wildly! Thats so weird. SO yes it can constrain the pipe, Secondly, I am working on the LOD system, it looks OK right now but not amazing as the LineRenderer isnt as bright as the tube renderer . Anyway here is a pic of the tube flailing around for your amusement!
Just out of curiosity, is that line renderer thing your talking about custom or the one I made from the Wiki?
It is custom, we have set up a custom Wire object that conducts power between things, and you can click around the walls of the ship to add vertexes to it, which are then added to a LineRenderer component.
My first attempt at making rope involved the same idea your talking about. You had to drag a loose wire over to a pad to make the light bulb turn on.
Unfortunately for me that was pre-rope script and I made everything within Maya, including joints and binding! Its cool to hear your kinda doing something similar and I would be interested to see what you do with my script if you do end up using it .
You can request custom stuff if youd like and I will include it!
I attached progress on the LOD system.. Keep in mind, this is my slower G5 im using at the moment sense my friend is playing the sims on my Macbook pro lol
It looks even better than before!
I like the bump mapped ones! I can think of a big worm that is going through tunnel just like "The Void" , except with nice bump mapping.
Can it also support parallax mapping ?
Hey! Yeah it supports it but as mentioned before, there is still a UV mapping issue on one of the sides, so it may look funky depending on what your doing with it.
I am also looking for an answer on how to BIND skin to a procedurally generated set of bones, so anyone with an answer to that will be praised by me forever . I think bound joints instead of constantly rebuilding the mesh would be WAY WAY faster .
This is totally great.0
Could you could put this up on the wiki? I stumbled upon this, and it's very useful.
Ok I have posted it on the Wiki. I also have a link to download the scripts in a .zip file from my website!
Thats also where I will be posting packages and more stuff soon!
This is really wonderful! I was just thinking about making a rope and having a character swing from one rope to another.
However, how would you go about having a character "grab" this rope?
I looked at the character joint doc and I didn't see a way to access a joint so that you could parent an object to it.
For instance with colliders you can get hit info and parent an object to another. But I don't think the same would work with this scripted rope. If I understand this script you are using a target at the end of the rope so maybe there might be some way to have a character grab the end of the rope...but I can't think of a way that a character could be attached to wherever it hit.
Yeah there are character joints in it, but it also has collision spheres at each joint location. I made a character stick to the rope just by saying on collision, attach a fixed joint to the object we collided with. That worked well.
Send me a PM if you need some better help with this but the collision spheres are in there
Sorry, I was too busy admiring this and overlooked the sphere colliders. I think I understand what you're getting at, I'll give it a go. This is very impressive.
Thank you for being so responsive!
Hey no problem, I try to be as helpful as possible!
This is so cool,thank,
Make Little big planet
Hi, thanks for an amazing script, good work!
But.. ..I am having a hard time with the collision on the rope, as you can see in my piscture I really need an god response on the collision, now the the handling of the rope with the crane feels "soft" and it often just slides right through the crane! is it possible to make good colision between the joints?
The chain you see in the picture are having hinge joint, box collision and rigid bodies every link.. and that works fine!
Btw the crane is completly physics driven...also the grip part when handling objects..
I am not sure I understand what you mean by soft and I think I understand what you mean by the rope sometimes just goes right through the crane!
The rope uses Collision Spheres and depending on what your resolution is and what type of load you have on the rope, the collision spheres could be close together or further apart (hence why it would just go right through something). Did you try using the MeshCollision checkbox on the script? Or is your crane already using a mesh collider..
Thanks for replying!
Yes the crane uses mesh collision on some parts, I also tried with box colliders and it behaved quite similar!
With "soft" I meant that the rope slips thorough my crane as it was made of butter or something!
I didnt Get any good results when I checked mesh collision on the rope, the rope got very unstable.... Maybe because it collided with the end and start object box collision?
I also don't entirely understand your question, is the issue stretching in the chain joints? How are you grabbing the chain with the crane? A bit more info would help.
No the streching issue of the joint is not the problem I was refering to here (though that is also a problem for me).
I am grabbing the chain only with the use of the colliders (no other trigger logic) on the crane (it has mesh coliders and box colliders).
The mesh checkbox gets the rope to act funny, it just "lives" and doesnt collide on the deck or anything?
the rope width is only 0.05 units maybe it cannoth be that small? I am certain that my problem is physx spesific, but I hope you guys can help me....
I know you are also using sphere collider in the rope, but could'nt you use a capsule colider that the lenght of the capsule is adjusted acording to the ropes resolution to get a more closed collision?
ok yeah I see what your talking about. I could use capsule colliders for the collision but when I wrote the script I was feeling lazy and just threw in the spheres so I didnt have to do the extra math involved . I might take another look at the rope today and see what I can do.
Hey thanks, you have already done a lot!!
You are also close to getting this quite perfekt! Now it is my hope that Unity also updates the physx engine so we could get some hardware acceleration also !
So do you also have an idea how I could spawn chain links instead of the rope? I probably sould use configurable joints instead of character joint!
I've found that the physics system's accuracy is very much -frame rate- dependent. For something as complex as you're doing here if the frame rate drops below 50 or 60 fps you may see objects passing -through- each other (it apparently happens between frames).
Yeah actually you could probably use my script to spawn a chain. Instead of using the tube renderer or the line renderer to make the art you would just instantiate a prefab link at each joint iteration. You should make sure that your transform node is set to where you want the links to hinge at and with every iteration you rotate the link 90 degrees.
Thats just how I would start going about doing it.
And I think Character joints are just fine for use with ropes or chains.
Thanks for doing all that work, the script seems very nice, i will start fiddling with it now and come back and post how it works out, I am hoping to make a grappling hook with working physics for a gadget type FPS
Ive done that myself and it seems to work pretty well. However, when I did it, I had to just shoot a line renderer from point A to point B, then on collision build the rope.
This is when Cloth Physics come in handy. Good Job though!!!
Noob question! How do I assign the target? I added this script to one object, and I'm not sure how to assign the target to my other object....
Noob questions are welcome! If there weren't any Noobs today, then there wouldnt be any great game makers tomorrow .
You can do it a couple of ways. First, in the inspector under my script component you will see target and a drop down next to it from which a list will drop down so you can select the other object. (If you dont see any variables than you might have to click the arrow to the left of the script title in your object) Another way is to drag and drop the item from the Hierarchy into the target area of my script.
Hopefully that helps!
Can you give me a hint to the logic if I want to set the tether target to an object I want to instantiate?
I need to have my "tube" set in a specific shape (actually shaped like a "J"). Is there any way to set the initial rope shape? Can I maybe attach something at points on the rope that would allow me to move certain parts of it?
Sorry but no there is no way to set the initial shave of the tube. You could probably use the TubeRenderer itself to set the positions and create a tube because the TubeRenderer has a method that allows that, but it wont have the physics enabled on it as its just graphical.
Amazing script! Thanks for sharing. It is just so fun to play it in the Editor with some collisions. I'm thinking we may make something like ponytail and attach it to character head..hehe. Just an idea what we can do about it
I have a question do I need to assign bones in a modeling program where I want the rope to bend?
Since the rope is generated from script you cannot pre-model the rope. If you are interested in modeling your own rope then you will have to add your bones to the model, bind the mesh to the joints in the modeling program, and then in Unity, assign each joint in the model with a character joint and connect them in order like a chain.
Its time consuming and probably would be easier to get a programmer to make you a script that will detect your bones and just add the character joints via script.