- Home /
pause button is not working
when i press pause, the sprite stops moving but he can turn left and right, and when you press the shoot button the sprite shoots but bullet is not moving. here is my script:
using UnityEngine;
public class PauseGame : MonoBehaviour { bool isPaused = false;
void OnGUI()
{
if (isPaused)
GUI.Label(new Rect(100, 100, 50, 30), "Game paused");
}
void OnApplicationFocus(bool hasFocus)
{
isPaused = !hasFocus;
}
void OnApplicationPause(bool pauseStatus)
{
isPaused = pauseStatus;
}
}
could you please give me a script that will work?
Answer by ZozeR · Jan 08, 2020 at 08:42 AM
If youre looking for any way to pause simply do this:
private bool paused = false;
public GameObject pause_panel;//this is the pause menu.
private void Update()
{
if(Input.GetKeyDown(KeyCode.Escape))
{
if (paused)
{
paused = false;
pause_panel.SetActive(false);
Time.timeScale = 1f;
}
else
{
paused = true;
pause_panel.SetActive(true);
Time.timeScale = 0f;
}
}
}
Answer by pommerose94 · Jan 08, 2020 at 02:53 PM
@ZozeR sorry it was the wrong script i copied^^
timescale 1 and 0 is not working i need another thing indeed my sprite stops moving but he turns left and right he can shoot but the bullet don't move
I cannot say anything until I see your full code but there's an easy way to solve it. just put an if statement checking the paused
bool, before where you move your sprite.
but he turns left and right he can shoot
before these.
It will look something like this:
if(!paused)
{
//changes in objects
}
Normally what i posted before should've worked.
if you want my player controller script
using System.Collections; using System.Collections.Generic; using UnityEngine; using $$anonymous$$ireInput;
public class playerController1 : $$anonymous$$onoBehaviour { private mInput _mInput;
private void Awake()
{
var database = Resources.Load<InputActionDatabase>("InputActionDatabase");
_mInput = new mInput(database);
new $$anonymous$$eybindData(database).Load();
}
public float moveSpeed;
public float jumpForce;
private Rigidbody2D theRB;
public Transform groundCheckPoint;
public float groundCheckRadius;
public Layer$$anonymous$$ask whatIsGround;
public bool isGrounded;
private Animator anim;
public GameObject snowBall;
public Transform throwPoint;
public AudioSource throwSound;
//add bool to see if the ball can be thrown (true at start)
bool canThrow = true;
//time between the throwing
public float throwDelay;
// Start is called before the first frame update
void Start()
{
theRB = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
isGrounded = Physics2D.OverlapCircle(groundCheckPoint.position, groundCheckRadius, whatIsGround);
if (_mInput.GetAction("P1 $$anonymous$$ove Left"))
{
theRB.velocity = new Vector2(-moveSpeed, theRB.velocity.y);
}
else if (_mInput.GetAction("P1 $$anonymous$$ove Right"))
{
theRB.velocity = new Vector2(moveSpeed, theRB.velocity.y);
}
else
{
theRB.velocity = new Vector2(0, theRB.velocity.y);
}
if ((_mInput.GetActionDown("P1 Jump")) && isGrounded)
{
theRB.velocity = new Vector2(theRB.velocity.x, jumpForce);
}
//add an other check if the ball can be thrown
if ((_mInput.GetActionDown("P1 Throw Ball")) && canThrow)
{
GameObject ballClone = (GameObject)Instantiate(snowBall, throwPoint.position, throwPoint.rotation);
ballClone.transform.localScale = transform.localScale;
anim.SetTrigger("Throw");
throwSound.Play();
//switch the bool to false to prevent the throw
canThrow = false;
//start the coroutine which can be paused
StartCoroutine(WaitForThrowDelay());
}
if (theRB.velocity.x < 0)
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if (theRB.velocity.x > 0)
{
transform.localScale = new Vector3(1, 1, 1);
}
anim.SetFloat("Speed", $$anonymous$$athf.Abs(theRB.velocity.x));
anim.SetBool("Grounded", isGrounded);
}
//coroutine
IEnumerator WaitForThrowDelay ()
{
//pause it for the delay time
yield return new WaitForSeconds(throwDelay);
//enable the throwing again
canThrow = true;
}
}