- Home /
Need cube to carry other cube - 3D, C#, Collisions
I'm making a game where you play as a small dude who can move left and right and who carries boxes that fall from the sky. You have to stack these boxes as high as possible. Currently there's a red box which represents the tiny-man/the player and a white box which is the box you want to catch. I simply added a rigid body and box collider to the white box. Then a box collider and move type script to the red box ( small dude ). The white box falls down onto the red box.
Now my question. When you move the red box, there's no connection between the two other than the collision, it sits there but doesn't stay there, so when I move the red box, the white box simply falls down.
I want to simulate as if the white box were laying on top of red box and less of the red box being in it's way so that when I move the red box it doesn't fall off unless I move too fast to the right or left simulating this stacking boxes effect.
I would suggest switching the "carried" box rigidbody to kinematic so that you can control the movement of the carried box through script and not through physics.
If you were to use this approach- you would store a measure of how much the carrier moved that frame using Update() and LateUpdate(). Then you would move the carried box the same amount in LateUpdate().
Answer by rageingnonsense · Apr 07, 2015 at 10:14 PM
I don't use unity physics much, but perhaps you could use a physics material on the player to give it a high amount of friction?
Answer by Raimi · Apr 08, 2015 at 01:10 PM
needs more work but put this on white...
void OnCollisionEnter(Collision collision)
{
transform.position = collision.contacts[0].point;
transform.parent = collision.transform;
}
this should make it stick to the red block. hope this helps a bit :)
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
How to build a road? 1 Answer
Having trouble with grid movement 1 Answer
How do i fix Error CS0029? 1 Answer