Im having a little problem making my character rotate.
At the moment he only faces forward but i want him to face forward when ever i press left and right because i want him to turn and firing at enemies.
This is the code im using at the moment:
using UnityEngine;
using System.Collections;
public class Runner : MonoBehaviour
{
enum playerState { SHOOT };
playerState currentState;
public GameObject laser;
public GameObject shootSpwn;
private float fireRate = 0.2f;
private float nextFire = 0.0f;
private float initialLaserSpeed = 20f;
public static float distanceTraveled;
private bool isGrounded = false;
public float gameOver_Y;
private Vector3 startPosition; // variable to hold players starting position.
// START/ UPDATE
//----------------------------------------------------------------------------------------------------------------------
// Use this for initialization
void Start ()
{
// hide player when start screen is up.
GameEventManager.GameStart += GameStart;
GameEventManager.GameOver += GameOver;
startPosition = transform.localPosition;
}
// Update is called once per frame
void Update ()
{
rigidbody.velocity = new Vector3(0, rigidbody.velocity.y, 0); // Set X and Z velocity to 0.
GUIManager.SetDistance(distanceTraveled); // distance counter.
inputControl();
playerDistance();
GameOver_Trigger();
}
// INPUT
//----------------------------------------------------------------------------------------------------------------------
void inputControl()
{
// instruct the player(Runner object), to move.
if (Input.GetKey(KeyCode.D)) // Right
{
transform.Translate(15f * Time.deltaTime, 0f, 0f);
}
if (Input.GetKey(KeyCode.A)) // Left
{
transform.Translate(-15f * Time.deltaTime, 0f, 0f);
}
if (Input.GetKey(KeyCode.Space) isGrounded)
{
Jump();
}
if(Input.GetMouseButtonDown(0) Time.time > nextFire) // mouse input -> left click (0), right click (1)
{
nextFire = Time.time + fireRate;
GameObject cloneLaser = Instantiate(laser, shootSpwn.transform.position, shootSpwn.transform.rotation) as GameObject;
cloneLaser.rigidbody.velocity = transform.TransformDirection(Vector3.right * initialLaserSpeed);
}
}
// PLAYER DISTANCE
//----------------------------------------------------------------------------------------------------------------------
private void playerDistance()
{
distanceTraveled = transform.localPosition.x; // Checks the distance traveled by the player.
}
// FIXED UPDATE
//----------------------------------------------------------------------------------------------------------------------
void FixedUpdate()
{
isGrounded = Physics.Raycast(transform.position, -Vector3.up, 1.0f);
}
// JUMP
//----------------------------------------------------------------------------------------------------------------------
void Jump()
{
if (!isGrounded)
{
return;
}
isGrounded = false;
rigidbody.velocity = new Vector3(0, 0, 0);
rigidbody.AddForce(new Vector3(0, 250, 0), ForceMode.Force); // (0, 700, 0)
}
// GAME_STATES
//----------------------------------------------------------------------------------------------------------------------
void GameOver_Trigger()
{
if (transform.localPosition.y < gameOver_Y)
{
GameEventManager.TriggerGameOver();
}
}
private void GameStart()
{
distanceTraveled = 0f;
GUIManager.SetDistance(distanceTraveled);
transform.localPosition = startPosition;
rigidbody.isKinematic = false;
gameObject.active = true;
enabled = true;
}
private void GameOver()
{
rigidbody.isKinematic = true; // freeze player when in "GameOver" state.
enabled = false;
}
}
Can anyone help me or give me some advice?