2017-08-21 3 views
1

iOSとAndroidでリリースされた2D空間シューティングゲーム(Chicken Invadersのようなものを想像してみてください)があります。私は今、WebGLに移植しようとしています。そのためには、マウスを使って動きを実装しようとしています。以前はUnityの組み込みキャラクタコントローラをモバイルプラットフォーム上に実装することで成功していましたが、コードベースを小さくしてプラットフォーム固有の実装を可能な限り少なくするために、WebGLビルドでこれを使い続けたいと思います。キャラクターコントローラーを使用してキャラクターをフォローする

したがって、船をマウスカーソルに追従させるにはどうすればよいですか?

PS: 私はtouchControl.Move()でtouch.deltaPositionを使用して、船が指の動きに従うようにしました。

EDIT:現在の方法

入力マネージャ

public Vector2 GetInput() { 
     switch(type) { 
      case PlatformType.Computer: 
       if (Input.GetButtonDown("Jump") || Input.GetAxis("Fire") != 0f) { 
        thisDelegate.InputDidReceiveFireCommand(); 
       } 
       if (!Input.mousePresent) { 
        temp.x = Input.GetAxis("Horizontal"); 
        temp.y = Input.GetAxis("Vertical");  
       } else { 
        if (Input.GetAxis("Mouse X") != 0f || Input.GetAxis("Mouse Y") != 0f) { 
         temp.x = Input.GetAxis("Mouse X"); 
         temp.y = Input.GetAxis("Mouse Y"); 
        } else { 
         temp.x = Input.GetAxis("Horizontal"); 
         temp.y = Input.GetAxis("Vertical");   
        } 
       } 
} 

PlayerController

void HandleInput() 
    { 
     mvm = InputController.GetInput(); 
     if (GetComponent<InputManager>().type == InputManager.PlatformType.Mobile) { 
      mvm *= Time.deltaTime * initialVeloc/10; 
     } else { 
      if (mvm != Vector3.zero) { 
       mvm -= transform.position; 
      } 
     } 
    } 

void Update() { 
    characterController.Move((Vector2)mvm); 
} 

現在の方法は、画面の中央に次の文字ジッタになります。

+0

あなたの現在の状態、少なくともあなたが文字を移動するために使用している方法を追加してください。 –

+0

@IgnacioAlorreが編集されました。 –

答えて

0

私はスクリプトを修正しました。デルタの代わりに絶対的なマウスの位置をとっています。ここではそれが今どのように見えるかです:

入力マネージャ:

  if (Input.GetAxis("Mouse X") != 0f || Input.GetAxis("Mouse Y") != 0f) { 
       temp = Input.mousePosition; 
       temp.z = 12.5f; 
       //    Vector3 initialMov = mvm; 
       temp = Camera.main.ScreenToWorldPoint(temp); 
       temp -= transform.position; 
      } 

コントローラ

mvm = InputController.GetInput(); 
mvm *= Time.deltaTime * initialVeloc; 
characterController.Move((Vector2)mvm); 

この方法は、単に意図したとおりに動作し、CPU使用率の面で、レイキャスティング法よりも効率的と思われます。

+0

おめでとうございます。今は役に立たないので私の答えを削除します –

関連する問題