-2

Unity 5 でこのエラー メッセージが表示されます

エラーCS1525 : 予期しないシンボルinsert variable name', expectingです。

using UnityEngine;
using System.Collections;

public class jumpControll : MonoBehaviour 
{

    public bool jump;
    public float jumpHeight;



    // Use this for initialization

    public IEnumerator jumpUp (float jumpHeight) 
    {
        jumpHeight = 3.0f;
        transform.position = new Vector3(transform.position.x,
          transform.position.y + jumpHeight, transform.position.z);
    }

    public IEnumerator jumpDown (float jumpHeight) 
    {
        jumpHeight = 3.0f;
        transform.position = new Vector3(transform.position.x,
           transform.position.y - jumpHeight, transform.position.z);
    }

    public IEnumerator jumpTest()
    {
        jumpUp(float jumpHeight);
        yield return new WaitForSeconds(1);
        jumpDown(float jumpHeight);
    }

    // Update is called once per frame
    void Update () 
    {
        jump = Input.GetKey(KeyCode.Space);
        if (jump == true)
            jumpTest();
    }
}
4

2 に答える 2

0

コードをコンパイルできない原因がいくつかあります。

まず、jumpUpandjumpDownメソッドが を返すことを指定しますIEnumeratorが、1 を返しません。jumpUpandで一定時間待機する必要がない場合jumpDownは、戻り値の型をvoidではなくにする必要がありIEnumeratorます。

public void jumpUp (float jumpHeight) 
{
    jumpHeight = 3.0f;
    transform.position = new Vector3(transform.position.x,             
                                     transform.position.y + jumpHeight,
                                     transform.position.z);
}

public void jumpDown (float jumpHeight) 
{
    jumpHeight = 3.0f;
    transform.position = new Vector3(transform.position.x,
                                     transform.position.y - jumpHeight, 
                                     transform.position.z);
}

次に、jumpTestメソッドで、変数を呼び出しjumpUpjumpDown渡しjumpHeightます。渡す変数の前にキーワードを使用する必要はありませんfloat。新しい変数を作成するのではなく、既に存在する変数を使用しているためです。

public IEnumerator jumpTest()
{
    jumpUp(jumpHeight);
    yield return new WaitForSeconds(1);
    jumpDown(jumpHeight);
}

最後に、IEnumeratorメソッドが適切に機能するためには、 を使用してメソッドを呼び出す必要がありますStartCoroutine()。たとえば、 update メソッドでは次のようになります。

void Update () 
{
    jump = Input.GetKey(KeyCode.Space);
    if (jump == true)
        StartCoroutine(jumpTest());
}
于 2015-10-13T18:44:04.317 に答える