- Home /
Flipping a 2D Sprite in Javascript
Hello fellow Unity users. I have a problem moore about methodology.
What i want to achive:
I want the player to spawn a animated 2d sprite when the Player starts moving.
What i have done so far:
I have been able to spawn a 2d sprite when im moving using Input.GetButtonDown but this seems like a bad way of doing it, i then instantiate a sprite i have in the scene to the position of a gameobject attached to my character.
Where my problems lie:
I get the sprite to spawn where i want it, but when i run left the sprite isnt flipped to the right direction, no matter what i try. I also feel that spawning the sprite using Input.GetButtonDown is a bad method and i would love to know a better way of doing it.
Here is my playerscript that handles everything.
#pragma strict
var maxSpeed = 20.0f;
var facingRight = false;
var jumpHeight = 700f;
var groundRadius = 0.2f;
var whatIsGround : LayerMask;
var grounded = false;
var groundCheck : Transform;
var anim: Animator;
var particleSpawn : GameObject;
var particleLocation : Transform;
var clone : GameObject;
var particleRight = false;
function Start()
{
anim = GetComponent(Animator);
}
function FixedUpdate ()
{
//groundcheck and jumping
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
//movement
var move = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(move));
rigidbody2D.velocity = new Vector2(move * maxSpeed, rigidbody2D.velocity.y);
//Facing right way
if(move < 0 && !facingRight)
Flip();
else if(move > 0 && facingRight)
Flip();
// Particles
if(Input.GetButtonDown("Horizontal") && grounded)
{
clone = Instantiate(particleSpawn, particleLocation.transform.position, particleLocation.rotation);
Destroy(clone,0.6);
}
if(move < 0 && !facingRight)
ParticleFlip();
else if(move > 0 && facingRight)
ParticleFlip();
}
function ParticleFlip()
{
particleRight = !particleRight;
var particleScale = clone.transform.localScale;
particleScale.x *= -1;
transform.localScale = particleScale;
}
function Update()
{
if(grounded && Input.GetButtonDown("Jump"))
{
anim.SetBool("Ground", false);
rigidbody2D.AddForce(new Vector2(0,jumpHeight));
}
}
function Flip()
{
facingRight = !facingRight;
var theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
Im sorry if its messy but im new to programming in general.
look at this thread. http://forum.unity3d.com/threads/42449-How-to-flip-a-sprite