- Home /
How to make a horizontal center of gravity in 2d ?
I am making a "tappy flappy bird" kind of style game in 2d but basically the character goes in vertical instead of horizontal and you need to avoid the obstacles etc. The concept is that the character must stay in the center, when I move it to avoid obstacles (no matter if is right or left) it needs to get back to the center. I would like to make a center of gravity based on the player, so it can moves on horizontal (both +x and -x) only and always get back to the center. I tried to use spring joints 2d and stuff and did a research to find something like that but didn't got anywhere. Any idea ??
PS: Unity 4.7.2
Answer by capnjake · Jan 26, 2017 at 02:45 PM
Create an anchor x-coordinate and have your "bird" accelerate towards it when it's x position != the anchor.
float anchor = 0f;
private void Update()
{
if (transform.position.x > anchor)
// Add force towards transform.right
else if (transform.position.x < anchor)
// Add force towards -transform.right
else
// No forces applied; kill velocity
}
Another fun method might be using a Spring Joint
. Personally I've never used it but from the documentation it looks like you can make it work. Might be easier and give it a cool effect but, again, not sure what it'll actually produce.
Yeah, I ended up using spring joint with box collider under and above the player. Its not very "correct" but it makes a cool effect and works pretty well if you set it up right ! But anyway, thanks for the awnser !!
Your answer
Follow this Question
Related Questions
unity2d cannot create if gravity level 1 Answer
Multiple Cars not working 1 Answer
Error when colliding and calling a IEnumerator 1 Answer
Distribute terrain in zones 3 Answers