Why is the script not working anymore?
I m making a endless runner game everything was working fine i could go left and right and the player keeps running.all of a sudden I cant move left or right anymore and ideas why?... the script:
using UnityEngine;
using System.Collections;
public class PlayerMotor : MonoBehaviour
{
private CharacterController controller;
private Vector3 moveVector;
private float speed = 5.0f;
private float verticalVelocity = 0.0f;
private float gravity = 5.0f;
private float animationDuration = 3.0f;
private bool isDead = false;
// Use this for initialization
void Start () {
controller = GetComponent<CharacterController> ();
}
// Update is called once per frame
void Update () {
if (isDead)
return;
if (Time.time < animationDuration) {
controller.Move (Vector3.forward * speed * Time.deltaTime);
return;
}
moveVector = Vector3.zero;
if (controller.isGrounded) {
verticalVelocity = -0.5f;
} else {
verticalVelocity -= gravity * Time.deltaTime;
}
// X - Left and Right
moveVector.x = Input.GetAxisRaw("Horizontal") * speed;
// Y - Up and Down
moveVector.y = verticalVelocity;
// Z - Forward and Backward
moveVector.z = speed;
controller.Move (moveVector * Time.deltaTime);
}
public void SetSpeed(float modifier)
{
speed = 5.0f + modifier;
}
// It is beign called every time our capsule hits something
private void OnControllerColliderHit (ControllerColliderHit hit)
{
if (hit.point.z > transform.position.z + controller.radius)
Death ();
}
private void Death ()
{
isDead = true;
GetComponent<Score> ().OnDeath ();
}
}
just added box colliders so the player cant get ut of the road nothing more :/
Have you tried to remove the collider and check if it worked again?
BTW. Try to avoid CharacterControllers, unless you really need them. $$anonymous$$ake your own with Rigidbodys and Physics.OverlapCircle.
I added box coliders so the player doesnt get out of the eg. road... nothing more and the box colider isnt whats blocking the plyer from moving right or left
I rly need some help PLEASEEEEEEE!! i dont know what to do now :/
So, I tried your script in an clean Unity Projekt and everything worked as it should, so the script is not the problem.
What you could try now is to set the gravity to zero and move your player upwards, so that he is over all the other obstacels in your game and can't collide with these stuff and dont fall down. Then try again if it woking now again
didn't work... but there is an error that pops up everytime i play the scene but its in another script do you think this might be the problem? the error: NullReferenceException: Object reference not set to an instance of an object Score.LevelUp () (at Assets/Scripts/Score.cs:39) Score.Update () (at Assets/Scripts/Score.cs:25)
the script:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Score : $$anonymous$$onoBehaviour
{
private float score = 0.0f;
private int difficultyLevel = 1;
private int maxDifficultyLevel = 20;
private int scoreToNextLevel = 10;
private bool isDead = false;
public Text scoreText;
// Update is called once per frame
void Update () {
if (isDead)
return;
if (score >= scoreToNextLevel)
LevelUp ();
score += Time.deltaTime * difficultyLevel;
scoreText.text = ((int)score).ToString ();
}
void LevelUp()
{
if (difficultyLevel == maxDifficultyLevel)
return;
scoreToNextLevel *= 2;
difficultyLevel++;
GetComponent<Player$$anonymous$$otor> ().SetSpeed (difficultyLevel);
Debug.Log (difficultyLevel);
}
public void OnDeath()
{
isDead = true;
}
}
Yes could be. "Score" is a reserved class-name for something. I guess, this leads to that Unity is using his own internal "Score" class. But because this is not referenced to call "LevelUp", Unity thows a "NullReferenceException". Again, this leads to that Unity is pausing the playmode. And because its paused, nothing can move.
But that should have also happened before you added the collider
There is also one error I can't really understand
error: Unable to join player connection multicast group.
Your answer
Follow this Question
Related Questions
Help! Pathfinding 1 Answer
Applying direction into transform position 0 Answers
Method not able to see Vector3 axis 1 Answer