Top Down 2D, facing direction bools
Hello,
I am in the process of developing a top down game and have the following script for my player/ controller:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
public float speed;
private float runSpeed;
private bool interact = false;
private Animator animator;
private BoxCollider2D collider2D;
private bool facingUp = false;
private bool facingDown = true;
private bool facingRight = false;
private bool facingLeft = false;
public bool IsDead { get; private set; }
void Awake(){
}
void Start(){
runSpeed = speed * 4;
}
void Update(){
}
void FixedUpdate () {
if (Input.GetKey (KeyCode.D)) {
GetComponent<Rigidbody2D> ().AddForce (Vector2.right * speed);
facingRight = true;
facingLeft = false;
facingDown = false;
facingUp = false;
} else if (Input.GetKey (KeyCode.A)) {
GetComponent<Rigidbody2D> ().AddForce (-Vector2.right * speed);
facingRight = false;
facingLeft = true;
facingDown = false;
facingUp = false;
} else if (Input.GetKey (KeyCode.W)) {
GetComponent<Rigidbody2D> ().AddForce (Vector2.up * speed);
facingRight = false;
facingLeft = false;
facingDown = false;
facingUp = true;
} else if (Input.GetKey (KeyCode.S)) {
GetComponent<Rigidbody2D> ().AddForce (-Vector2.up * speed);
facingRight = false;
facingLeft = false;
facingDown = true;
facingUp = false;
}
if (Input.GetKey (KeyCode.Space)) {
speed = runSpeed;
}
if (Input.GetKeyUp (KeyCode.Space)) {
speed = 30;
}
if (Input.GetKey (KeyCode.E)) {
interact = true;
Debug.Log ("Interacted with something!");
} else if (Input.GetKeyUp (KeyCode.E)) {
interact = false;
Debug.Log ("You are no longer interacting with something.");
}
}
public void RespawnAt(Transform spawnPoint)
{
gameObject.SetActive (true);
if (facingDown = false)
Flip ();
IsDead = false;
GetComponent<Collider2D>().enabled = true;
transform.position = spawnPoint.position;
}
private void Flip(){
GetComponent<Rigidbody2D>().transform.position = new Vector3 (-transform.localScale.x, -transform.localScale.y, transform.localScale.z);
facingDown = GetComponent<Rigidbody2D>();
}
public void Kill()
{
gameObject.SetActive (false);
GetComponent<Collider2D>().enabled = false;
IsDead = true;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.transform.tag == "Goal") {
GameManager.CompleteLevel ();
}
}
}
I want these bools in place because they would seem important when it comes time to do my animations. It also seems important come 'respawn time'... however I keep getting warnings that say these bools are not assigned? I have assigned them according to movement keys I thought. And I also use 'facingDown' in my RespawnAt function. I am still learning and would really like to understand what I am doing wrong. Or how I can be describing these bools to the computer in a way that really makes sense.
It also is telling me that I have not assigned interact. I have plans to create a separate script for interact and call that function from that script, which I assume would take care of that warning.
Your answer
Follow this Question
Related Questions
[2D] Slide object after collision 2 Answers
I need hit boxes code for 2d topdown maze 1 Answer
Making a 2d game with 3d help 1 Answer
creating multi-tile high terrain rule tiles 0 Answers
Suggestions for 2D-Top down combat (kinda like TLoZ nes) 1 Answer