Properly attach to a GameObject after collision?
How can I properly make a GameObject attach (or "stick") to another GameObject after collision? The problem: I want the GameObject to attach after collision even if it is changing scale.
"Attach after collision" code:
protected Transform stuckTo = null;
protected Vector3 offset = Vector3.zero;
public void LateUpdate()
{
if (stuckTo != null)
transform.position = stuckTo.position - offset;
}
void OnCollisionEnter(Collision col)
{
rb = GetComponent<Rigidbody>();
rb.isKinematic = true;
if(stuckTo == null
|| stuckTo != col.gameObject.transform)
offset = col.gameObject.transform.position - transform.position;
stuckTo = col.gameObject.transform;
}
This code makes a GameObject attach perfectly after collision. But when that GameObject changes scale (while it's attached), it visually no longer looks attached to whatever it collided with. Basically, this code makes the GameObject stick with only the original scale at the moment of the collision. How can I make the GameObject always stick to whatever it collided with? And with whatever scale it has during the process?
Have you tried making the game object a child of your target game object (and set it's local position to 0,0,0)? I'm not sure if scaling will work, but you won't have to update position every frame because it will do so by being a child.
Yes, I already tried it and I always get unexpected results. I would like to avoid parenting. "It's a bit unsafe though, parenting colliders can cause weird results, like random teleporting or object starting to move and rotate insanely, etc." - Samed Tarık ÇETİN : comment
Parenting is probably the best way to go about it. But if the parent isn't uniform in scale (1, 1, 1) you will get weird results. When it comes to parenting colliders you can have them ignore each other.
Your answer
Follow this Question
Related Questions
Unity Particle Trigger detection 0 Answers
Skip OnTriggerEnter isn't working at all 1 Answer
Master Audio source volume control with slider 1 Answer
Unity Annoyance with Physics Help C# Scripting Problem Momentum Issue Please Help 0 Answers
ClientRpc Function not being carried out on clients in Unity3d c# 0 Answers