2016-04-26 5 views
1

2Dゲームオブジェクトを操作するボタンのセットを作成しようとしていて、そのすべての人がInputManagerについて投稿していますが、私はこれをやっているとは思わない。私は、次の操作を行いますAC#のコードを探しています:(と私は現在持っているコードは以下に掲載されている)ゲームオブジェクトを操作するためのユニティUIボタン

  1. は私がオブジェクト
  2. を移動することができますのonclickメソッドを持っているUpdate()FixedUpdate()方法を持っていますボタンがまだ押されているかどうかをチェックします。

現在のところ、自分のコードはオブジェクトを一度だけ移動し、それ以降の残りのクリックに気付かないようにします。

本当にありがとうございました。ありがとうございました。あなたは速度を設定するための使用を試してみる必要がある。この場合

using UnityEngine; 
using System.Collections; 

public class fScript : MonoBehaviour { 

    public GameObject player; 
    private Rigidbody2D rb; 
    Vector3 v; 

    // Use this for initialization 
    void Start() { 
     rb = player.gameObject.GetComponent<Rigidbody2D>(); 
     v = new Vector3 (10, 0, 0); 
    } 

    // Update is called once per frame 
    public void MovePLayer() { 
     rb.AddForce (v); 
     Debug.Log ("CLICKED"); 
    } 
} 

1

2

答えて

0

。ベロシティは常に次の瞬間に遅くなります。フレームごとにベロシティを変更すると、ボタンを押したときの速度が一定になります。 しかしもう1つ。 OnClickイベントには適用しないでください!私が知っているように、UIボタンでは実現されていないOnPressイベントが必要です。 次のコードでこの問題を解決してみてください:

private bool MouseIsDown; 

void OnPointerDown(){ 
     MouseIsDown = true; 
} 
void OnPointerUp(){ 
     MouseIsDown = false; 
} 

及びIF本体に固定された更新の内部速度でコードを必要なときMouseIsDown ==真。

+0

これは私が探していたものではありませんでした。私はちょうど 'fixedUpdate'メソッドで画面のタッチポイントを使い、ユーザーが触っていた場所に基づいて力を適用しました。しかし、超加速を避けるために、私は最大速度を制限した。私は応答をありがとう! –

関連する問題