0
左右の2つのキューブからなるオブジェクトを移動しています。これらの立方体は、y軸上でランダムに生成されます。キューブを左右に移動するタッチコントロール
私は問題なく左右に移動できますが、いずれかのキューブを左右に動かすとすべて移動します。
キューブのいずれかを、すべてではなく、左または右にだけタッチしたときに、どのように移動できますか?ここでは以下の私のコードは次のとおりです。
public Transform block;
public Transform player;
private float objectSpawnedTo = 5.0f;
public static float distanceBetweenObjects = 5.0f;
private float nextCheck = 0.0f;
private ArrayList objects = new ArrayList();
void Start() {
maintenance(0.0f);
}
void Update() {
float playerX = player.position.y;
if(playerX > nextCheck)
{
maintenance(playerX);
}
}
private void maintenance(float playerX)
{
nextCheck = playerX + 30;
for (int i = objects.Count-1; i >= 0; i--)
{
Transform blck = (Transform)objects[i];
if(blck.position.y < (transform.position.y - 30))
{
Destroy(blck.gameObject);
objects.RemoveAt(i);
}
}
spawnObjects(5);
}
private void spawnObjects(int howMany)
{
float spawnX = objectSpawnedTo;
for(int i = 0; i<howMany; i++)
{
Vector3 pos = new Vector3(-3.5f,spawnX, 0);
//float firstRandom = Random.Range(-6.0f, 1.0f);
Transform blck = (Transform)Instantiate(block, pos, Quaternion.identity);
//blck.localScale+=new Vector3(firstRandom*2,0,0);
objects.Add(blck);
//pos = new Vector3(0,spawnX, 0);
//blck = (Transform)Instantiate(block, pos, Quaternion.identity);
//blck.localScale +=new Vector3((8.6f-firstRandom)*2,0,0);
//objects.Add(blck);
spawnX = spawnX + distanceBetweenObjects;
}
objectSpawnedTo = spawnX;
}
}
キューブ・制御コード:
は、キューブのコード生成
public float speed = 5;
// Use this for initialization
void Start() {
}
void Update() {
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
// Get movement of the finger since last frame
Vector3 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
// Move object across XY plane
transform.Translate(touchDeltaPosition.x * speed, 0, 0);
Vector3 boundaryVector = transform.position;
boundaryVector.x = Mathf.Clamp (boundaryVector.x, -5.5f, -2.8f);
transform.position = boundaryVector;
}
}
}
おかげ:
は、私はあなたが「感動」とレイキャストが成功した場合のみ、それを移動されたキューブをチェックするレイキャストがある何をする必要があるかと思いますコメント、iveはこのコードを使用しましたが、レイキャストに関連するエラーを取得していますか?どのように私はこれを解決することができます。また、私は最初のものの代わりに残りのタッチで作業するために何をする必要があります。あなたが正しい方向に私を指すことができれば、私はそれを感謝する – U53R
私は提供されたコードのエラーを修正した(主に私がここにそれを書いたし、それをテストしなかったという事実のために)、それをテスト:それはうまく動作します。タッチデバイスでテストしていることを確認してください。 'Input.GetTouch()'が使用されているので、マウスのクリックでは動作しません。残りのタッチで動作させるために、私は単純に '触れた' boolロジックをboolの配列に変換しました。 – Kardux
はい、その作業。これで私はゲームオブジェクトの親であるメインキューブを選択するときにキューブを左右に動かすことができますが、gameobjectを左右に動かすことはできますか?あなたはGetComponentsInChildrenを使う必要があると思いますか? – U53R