Пример #1
0
    float timer = 0; //経過時間

    #endregion Fields

    #region Methods

    // Use this for initialization
    void Start()
    {
        ar = GameObject.Find ("ARDUINO").GetComponent<arduino> ();

        POS = transform.localPosition;	//スタート位置保存
        m_pos = POS;		//
        m_pos.x += posX;	//移動
        m_pos.z += posY;	//移動
        m_pos.y += posZ;	//移動
        transform.localPosition = m_pos;	//移動を反映
        speed1 = new Vector3 (4.0f,0.0f,0.0f);	//ウインチでの移動速度を決定
        Debug.Log ("speed1="+speed1);
        speed2 = new Vector3 (0.0f, 0.0f, 2.5f);	//登ってからスタート位置への移動速度を決定
        Debug.Log ("speed2="+speed2);

        ar.setMode (-1);
    }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        try{
            if(mode < GLIDE)	//滑走より前の状態なら
                get = ar.getMode ();	//arduinoからの値取得
        }catch{	//arduinoのすくイプとを取得できていない
            Debug.Log ("errror Arduino");	//エラー表示
            ar = GetComponent<arduino> ();	//再度arduinoのスクリプトを取得
            get = mode;	//状態維持
        }

        //get = MOVE;

        //Debug.Log ("mode = " + mode);
        if (Input.GetKeyDown (KeyCode.S) && get ==0) {	//スタート待ち状態でSキーを押したら
            get = MOVE;	//arduinoからスタート信号を受け取った状態に
        }
        if (Input.GetKeyDown ("space")) {	//スペースキーが押されたら
            get=JUMP;	//arduinoからジャンプの信号を受け取った状態に
            Debug.Log ("jump");
        }
        //Debug.Log ("get=" + get + "move=" + mode);

        switch(get){
        case STOP:
            break;
        case MOVE:	//スタートの信号を受け取ったら
            if(mode == STOP){	//現在の状態がスタート待ち状態なら
                rb.AddForce(-100,0,0);	//初速として少し押し出す
                mode = MOVE;	//状態を滑走中に
                rb.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY;	//変な回転をしないように固定
                Planing_Clip.PlayOneShot (Planing);	//滑走音を再生
            }
            break;
        case JUMP:	//ジャンプする信号を受け取ったら
            if(mode == MOVE){	//今の状態が滑走中ならば
                //if(Input.GetKeyDown(KeyCode.Space)){
                Planing_Clip.Stop();	//滑走音を停止
                wind_Clip.Play ();	//風の音を再生
                se1_Clip.PlayOneShot (SE1);	//ジャンプ音を再生
                jumpFlg = true;		//ジャンプした
                mode = JUMP;	//状態をジャンプに
                Debug.Log ("JUMP!");
                rb.constraints = RigidbodyConstraints.FreezeRotationZ;
                /*
                if(ar.getData () < 100 )	//受け取ったジャンプの強さが一定以下なら
                    rb.AddForce(jumpPowerX,jumpPowerY,0.0f);	//最低の力でジャンプ
                else{
                    rb.AddForce(jumpPowerX,jumpPowerY*((float)ar.getData ()/100.0f),0.0f);	//ジャンプの強さを補正する
                }
                */
                int data = ar.getData ();
                float plus = jump*data;
                float minus = jump*data*-1;
                rb.AddForce(jumpPowerX+minus,jumpPowerY+plus,0.0f);	//ジャンプの強さを補正する
                ar.deleteBuffer();	//arduinoからあの値を消去
                mode = GLIDE;	//現在の状態を滑空中に
                get = GLIDE;	//
                ar.setMode (GLIDE);	//arduinoの状態を滑空中に
            }
            break;
        case GLIDE:	//滑空中の信号を受け取ったら
            if(mode == GLIDE){	//今の状態が滑空中なら
                //float data = (float)ar.getData();
                float data = ar.getData ();	//arduinoから値を取得
                //Debug.Log ("data + mode = "+data+get);

                if(Input.GetKey(KeyCode.A)){
                    data = 0.02f;	//
                }
                else if(Input.GetKey(KeyCode.D)){
                    data = -0.02f;
                }

                if(data>0){
                    //data = 1;
                    Debug.Log ("plus");
                }
                else if(data<0){
                    //data = -1;
                    Debug.Log ("minus");
                }
                else{
                    //data = 0;
                    Debug.Log ("center");
                }
                transform.Translate(0,0,-jumpYoko*data);
            }
            break;
        default:
            break;
        }
        if (mode == MOVE) {
            timer += Time.deltaTime;
            if( timer > 4.0f ){
                //Debug.Log ("planing");
                timer = 0.0f;
                Planing_Clip.PlayOneShot (Planing);
            }
        }
    }