1

私は簡単なポンゲームを持っていますが、エスケープキーを押してゲームを一時停止しても、ユーザーはパドルを左右に動かすことができます。ゲームはタッチを伴うモバイルゲームです。ゲームが一時停止しているときにもパドルが動かないようにするにはどうすればよいですか?

これが役立つ場合の私のパドルのコードは次のとおりです。

private var ray : Ray;
private var hit : RaycastHit;

function Start () {

}

function Update () {
    if(Input.GetMouseButton(0)){
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(ray, hit)){
            transform.position.x = hit.point.x;
        }
    }
}

これが私の一時停止スクリプトです:

var gamePaused : boolean = false;
var back : Texture2D;
var GUIskin:GUISkin;
var ClickSound:AudioClip;

function Start(){
    Time.timeScale=1;
    gamePaused = false;
    gameObject.GetComponent(PauseMenu).enabled = false;
}

function OnGUI(){
    GUI.skin = GUIskin;

    GUI.Box (Rect (Screen.width - 550,Screen.height - 700,400,200), back);
    if(GUI.Button(new Rect(Screen.width - 510,Screen.height - 615,120,80), "Main                      Menu")) {
        Application.LoadLevel("Menu");
        audio.PlayOneShot(ClickSound);
    }
    if(GUI.Button(new Rect(Screen.width - 310,Screen.height - 615,120,80), "Quit")) {
        audio.PlayOneShot(ClickSound);
        Application.Quit();
    }
}

また、これが私の一時停止コントローラーです。

private var gamePaused : boolean = false;

function Update () {
    if(Input.GetKeyDown(KeyCode.Escape)){
        if(gamePaused){
            Time.timeScale=1;
            gamePaused = false;
            gameObject.GetComponent(PauseMenu).enabled = false;
        }
        else{
            Time.timeScale = 0;
            gamePaused = true;
            gameObject.GetComponent(PauseMenu).enabled = true;
        }
    }
}
4

2 に答える 2

3

パドル スクリプトは、一時停止状態をチェックするように指示されることはありません。

更新コードでは、一時停止状態のチェックをここに追加する必要があります。

function Update () {
    if(!gamePaused){
        if(Input.GetMouseButton(0)){
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if(Physics.Raycast(ray, hit)){
                transform.position.x = hit.point.x;
            }
        }
    }
}
于 2013-03-12T12:50:13.510 に答える
0

パドルの更新機能でゲームが一時停止しているかどうかを確認し、一時停止している場合は、パドルを動かさずに機能を終了します。例えば:

if(Time.timeScale == 0) return;
于 2013-01-14T11:06:43.530 に答える