- Home /
I need help with my 2D Sprite spazzing out when turning.
Ok, so I have an enemy that patrols between two points, what I need it to do is flip the sprite when it reaches the endPos and flip again when it reaches the startPos, but whats happening is the sprite just repeatedly flips and this makes it look like its spazzing out. here is the code:
using UnityEngine;
using System.Collections;
public class PingPong : MonoBehaviour {
public float moveSpeed = 2f;
public bool facingSwitch = false;
float startingPos;
float endPos;
public int unitsToMove = 5;
bool facingRight = true;
Animator anim;
void Start ()
{
anim = GetComponent<Animator>();
}
void Awake()
{
startingPos = transform.position.x;
endPos = startingPos + unitsToMove;
}
void FixedUpdate()
{
if(facingRight)
{
rigidbody2D.velocity += new Vector2(moveSpeed, rigidbody2D.velocity.y);
}
if (rigidbody2D.position.x >= endPos)
{
facingRight = false;
}
if(!facingRight)
{
rigidbody2D.velocity -= new Vector2(moveSpeed, rigidbody2D.velocity.y);
}
if (rigidbody2D.position.x <= startingPos)
{
facingRight = true;
}
if(rigidbody2D.velocity.magnitude > moveSpeed)
{
rigidbody2D.velocity = rigidbody2D.velocity.normalized * moveSpeed;
}
if(facingRight && moveSpeed > 0.1)
{
facingSwitch = true;
anim.SetBool ("Turn", true);
}
if(!facingRight && moveSpeed > 0.1)
{
facingSwitch = false;
anim.SetBool ("Turn", false);
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Comment
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Assigning a Sprite to a Script and creating a Gameobject out of that sprite 1 Answer
Roguelike Tutorial Expansion of Layout 1 Answer
How to make a UI image change sprite through a script that is not attached to the UI image itself 0 Answers