How do I rotate on a new pivot point with RotateAround?

I’m struggling to get Transform.RotateAround to work properly and am wondering where I’m going wrong.

The idea is quite simple. I have an object that floats from one platform to another above it. Once it collides with the top platform, I need to change its pivot point so that it rotates from the top of the object. Well, actually, it should rotate from one of the top corners.

I’ve tried to use Tranform.RotateAround but I’m having major problems trying to get it to do this. The results I’m getting are way off what I want and are somewhat erratic. What I have at the moment is this:

	// Update is called once per frame
	void Update () {
		if (isCollided && !isStopped)
		{
			// Move the object up
			transform.Translate(Vector3.up * Time.deltaTime);
		}
		if (isStopped)
		{
			// Object has hit the bottom of the top platform. From what direction did the original
			// collision come from?
			if (collisionDirection == CollisionDirection.Left)
			{
				transform.RotateAround(transform.position - Vector3.up, Vector3.back , 50 * Time.deltaTime);
			}
		}
	}

I’m pretty new to Unity and have never done any 3D work so I’m not too sure about the coordinates. That’s probably where I’m going wrong?

if you’d like it to pivot, like an orbit, you need to give it a fixed point to rotate around. currently, you hvae the RotateAround() function referencing the object which is being rotated. This means that as it rotates, it moves position, and so does the pivot reference, so it will end up just spinning off into space. you need to give it a fixed transform or a fixed Vector3 point to have it rotate around. Something that does not change while the object is rotating.

Ah - of course. That makes sense and I’ve now managed to get that part working. Thanks.