0

私は 4 つの 3D テキスト Accelerate、Brake、Left、Right と一体になった Car を持っています。すべてボックスコライダーを持っています。次のスクリプトをメインカメラに添付しました

using UnityEngine;
using System.Collections;

public class GamePlayCamera : MonoBehaviour {

void FixedUpdate ()
    {
        if ( Application.platform == RuntimePlatform.IPhonePlayer ||
            Application.platform == RuntimePlatform.Android )
        {
            if ( Input.touchCount <= 0 )
                return;

            for(int i = 0 ; i<Input.touches.Length; i++)
            {

                Touch touch  = Input.touches[i];
                if ( touch.phase == TouchPhase.Began )
                {

                    OnTouchBegan( touch.position );
                }
                else if(touch.phase == TouchPhase.Ended)
                {
                    OnTouchEnd( touch.position );
                }
            }
        }
        else
        {
            if ( Input.GetMouseButtonDown( 0 ) )
            {
                Debug.Log(Input.mousePosition);
                OnTouchBegan( Input.mousePosition );
            }
            else if(Input.GetMouseButtonUp(0))
            {
                OnTouchEnd( Input.mousePosition );
            }
        }
    }

        void OnTouchBegan (Vector2 screenPos)
        {
            Ray ray = Camera.main.ScreenPointToRay( screenPos );
            RaycastHit hit;

            if ( Physics.Raycast( ray, out hit ) )
            {
                if(hit.collider.gameObject.name.Equals("Acc"))
                {
                    hit.collider.gameObject.SendMessage("Accel", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("brk"))
                {
                    hit.collider.gameObject.SendMessage("TouchDown", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("LFT"))
                {
                    hit.collider.gameObject.SendMessage("TouchDown", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("RHT"))
                {
                    hit.collider.gameObject.SendMessage("TouchDown", SendMessageOptions.DontRequireReceiver);
                }

            }

        }

        void OnTouchEnd (Vector2 screenPos)
        {
            Ray ray = Camera.main.ScreenPointToRay( screenPos );
            RaycastHit hit;

            if ( Physics.Raycast( ray, out hit ) )
            {
                if(hit.collider.gameObject.name.Equals("Acc"))
                {
                    hit.collider.gameObject.SendMessage("DAccel", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("brk"))
                {
                    hit.collider.gameObject.SendMessage("TouchUp", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("LFT"))
                {
                    hit.collider.gameObject.SendMessage("TouchUp", SendMessageOptions.DontRequireReceiver);
                }
                else if(hit.collider.gameObject.name.Equals("RHT"))
                {
                    hit.collider.gameObject.SendMessage("TouchUp", SendMessageOptions.DontRequireReceiver);
                }

            }

        }

}

車の動きのロジックは問題ありません。マウスを使用して何度もテストしました。問題は、マルチタッチが正しく機能していないことです。MultiTouch は初めて機能しますが、ボタンを数回クリックすると、動作がおかしくなり始めます。左をクリックすると、Accelerate の機能が動作し始め、しばらく何も起こりません。誰でも問題が何であるか教えてもらえますか? 私は Unity を初めて使用し、いくつかの問題を抱えています。助けてください。ありがとう。

4

0 に答える 0