Question by
Bloodyprincessss · Oct 23, 2017 at 09:43 AM ·
2drigidbody2d gamerigidbody2drpg
2D Sprite is floating when I move him (Rigidbody2D)
I have a big problem my sprite, so the player is "floating" when I move him all over the map (not throught objects or in water) . I changed the script because he was bouncing weird against some objects. So first my sprite was rotating weird, so I changed the script a bot but know he is just floating. And I dont really know what do do because Im a beginner thats my first RPG. ( my sprite have dropebox and also rigidbody2D)
using UnityEngine; using System.Collections;
public class PlayerController : MonoBehaviour {
public float moveSpeed;
private Animator anim;
private Rigidbody2D myRigidbody;
private bool PlayerMoving;
private Vector2 LastMove;
public string Horizontal { get; private set; }
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
myRigidbody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
Vector3 currentRotation = transform.localEulerAngles;
currentRotation.z = 0;
transform.localEulerAngles = currentRotation;
PlayerMoving = false;
if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < -0.5 )
{
//transform.Translate (new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
myRigidbody.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * moveSpeed, myRigidbody.velocity.y);
PlayerMoving = true;
LastMove = new Vector2(Input.GetAxisRaw("Horizontal"), 0f);
}
if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < -0.5f )
{
//transform.Translate(new Vector3(0f, Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime, 0f));
myRigidbody.velocity = new Vector2(myRigidbody.velocity.x, Input.GetAxisRaw("Vertical") * moveSpeed);
PlayerMoving = true;
LastMove = new Vector2(0f, Input.GetAxisRaw("Vertical"));
}
anim.SetFloat("MoveX", Input.GetAxisRaw("Horizontal"));
anim.SetFloat("MoveY", Input.GetAxisRaw("Vertical"));
anim.SetBool("PlayerMoving", PlayerMoving);
anim.SetFloat("LastMoveX", LastMove.x);
anim.SetFloat("LastMoveY", LastMove.y);
}
}
So that what my game look like
screenshot-unity.png
(172.7 kB)
Comment
Your answer
Follow this Question
Related Questions
2D Characters slowly drifts downwards? 1 Answer
Will this work? 0 Answers
All colliders not longer working 0 Answers
Arkanoid-like bounce troubles 1 Answer
Game Object Drop 0 Answers