• 締切済み

unityで今プログラムを組んでいます

今prefabで生成した物(クローン)のY座標を配列に入れて その中で現在一番数値の多いものを表示というものを作りたいのですが以下のプログラムだと 現在の高さではなくクリックで生成した物の高さになってしまいます。 理由が分からないのでアドバイスお願いします。 var test : Transform; var foo2 = new Array(); function Update(){     //クリック if (Input.GetButtonDown ("Fire1")) { Instantiate(test, transform.position, transform.rotation);//生成 } } //判定 function OnCollisionEnter(info : Collision) { foo2[i] = this.transform.position.y;//配列代入 //配列の中身調べる for(var A = 0; A <= i; A++){ if(foo2[i] > SavePos_y){ SavePos_y = foo2[i]; Debug.Log(foo2[i]); i++; } }

みんなの回答

回答No.1

「for(var A = 0; A <= i; A++){ 」だと、 変数Aがループカウンタで、iがループ最大値になるけど、 ループ内ではfoo2[i]を参照しています。 なにがしたいのかよくわかんないけど、 foo2の配列の中の最大値をSavePos_yに入れる つもりなら、意図通りには動作しないでしょう。 あと、 ・OnCollisionEnter関数を閉じる「}」がない ・変数iやSavePos_yが、OnCollisionEnter関数内で初期化されずに 使用されているのも怪しい

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【Unity】オブジェクトが跳ね返らない

    Unityの勉強どころか、プログラムの勉強を始めたばかりの者ですが、 質問にご回答いただけないでしょうか。 javaで壁に当たるたびに跳ね返るというオブジェクトを作りたいのですが、 下記のようなスクリプトでやってみた所、壁に衝突した際に跳ね返るときと、跳ね返らない時があります。 なぜ跳ね返らない時があるのかよくわからないのですが、いったい何故なのでしょうか? ---------------------------------------- #pragma strict var way = -1; var count = 0; function Update () { transform.position += Vector3.right * 5 * way * Time.deltaTime; } function OnCollisionEnter(collision: Collision) { count = count +1; Debug.Log(count); way = way * -1; } ------------------------------------------ 宜しくお願い致します。

  • unityでのプログラミングについて

    いまunityでゲームを制作していてシューティングのゲームをつくっています。 そこで次のようなプログラムを作成したのですがエラーが返ってきて困っています。 var bulletPrefab : GameObject; var bulletInterval : float = 0.2; var bulletEnable : boolean = true; var bulletVelocity : float = 100; var bulletTime : float = 0.0; (省略してます) function start(){ (省略してます) function update(){ if(Input.GetButton("Jump") && bulletEnable) { ←エラー箇所です。 bulletEnable = false; var bullet = Instantiate(bulletPrefab,transform.position,transform.rotation); var direction : Vector3 = Vector3(0,0,1); bullet.rigidbody.AddForce(direction * bulletVelocity,ForceMode.VelocityChange); } bulletTime += Time.deltaTime; if (bulletTime &gt;bulletInterval) { ←エラー箇所です。 bulletTime = 0.0; bulletEnable = true; } } 次のエラーが返ってきます。 Assets/character.js(22,19): BCE0044: expecting ), found ';'. Assets/character.js(22,20): BCE0043: Unexpected token: bulletInterval. こんな感じでエラーがでます。 解決方法を知ってる方は教えてください。おねがいします。

  • Unityの質問です。

    ボタンを押すと、キャラクターの真後ろにオブジェクトが出現するようにしたいのですが、 using UnityEngine; using System.Collections; [ExecuteInEditMode()] public class GUIController : MonoBehaviour { public CharacterController characterController; public GameObject character; public GameObject domino; private Vector3 objPosition; // Use this for initialization void Start () { objPosition = new Vector3 (0, 0, 0); } void OnGUI(){ if(GUI.Button(new Rect(600, Screen.height - 160, 120, 120), "おす")){ Debug.Log("ぼたん"); float x = characterController.transform.localPosition.x; float y = characterController.transform.localPosition.y + 0.5f; float z = characterController.transform.localPosition.z - 0.64f; objPosition.Set(x, y, z); Debug.Log (x+","+y+","+z); GameObject domino_prefab = (GameObject)Instantiate(domino,objPosition, characterController.transform.rotation); } } } こうしてみたのですが、うまくキャラクターの真後ろにオブジェクトが出てきてくれません。 どなたか助けてください!

  • awkによるあるプログラムその2

    立て続けに申し訳ないですが、 次のプログラムを実行すると、 gawk: ./test.awk:19: fatal: function name `foo' previously defined というエラーになってしまいます。 なぜでしょうか? #!/usr/bin/gawk -f #test.awk: BEGIN{ a="OK"; b="OK"; c="OK"; print foo(1,2); print a,b,c; print bar("AWK is", "convenient"); print a,b,c; print "4!==" recursive(4); } function foo(a,b, c){ c=a+b; return c; } function foo(a,b, c){ c=a b; return c; } function recursive(a){ if(a<=1)return 1; else return a*recursive(a-1); }

  • 【Unity】javascrptのデバッグについて

    javascriptにて、操作キャラクターがトラップオブジェクトに触れるとワープさせられるスクリプトを書いています。 そこでどうしてもビルドエラーが直らなくて困っています。 改善方法をご教授頂きたいです。 下記ソースコードとエラー文です。 -------ソースコード------- #pragma strict function OnTriggerEnter(other : Collider)    { if (other.gameObject.tag == "Player")        { ver respawn : GameObject = GameObject.FindWithTag("Respawn"); other.gameObject.transform.position = respawn.transform.position; } } -------エラー文------- Assets/respawn.js(6,21): BCE0043: Unexpected token: respawn. Assets/respawn.js(6,20): UCE0001: ';' expected. Insert a semicolon at the end.

  • クロージャ

    javascriptのクロージャについて。 クロージャにnewは必要ですか? コンストラクタであれば、newでオブジェクトを生成しますが、クロージャはどうでしょうか? クロージャ-------------------- function Person(n, a){ var name = n; var age = a; return { getName: function() { return name; }, setAge: function(i){ if( 0<= i ){ age = i; } }, getAge: function(){ return age; } } } var p = new Person('Hanako', 3); // new を付けなくても生成できる

  • UnityC#の質問です!

    プログラミング初心者です。 ブロックを5*9で並べるスクリプトなのですが。 using UnityEngine; using System.Collections; public class SceneControl : MonoBehaviour { public static int BLOCK_NUM_X = 9; public static int BLOCK_NUM_Y = 5; public GameObject BlockPrefab = null; public BlockControl[,] blocks; void Start() { // ブロックを生成、配置する. this.blocks = new BlockControl[BLOCK_NUM_X, BLOCK_NUM_Y]; int color_index = 0; for(int y = 0;y < BLOCK_NUM_Y;y++) { for(int x = 0;x < BLOCK_NUM_X;x++) { //BlockPrefabをGameobjectにキャストする GameObject game_object = Instantiate(this.BlockPrefab) as GameObject; BlockControl block = game_object.GetComponent<BlockControl>(); this.blocks[x, y] = block; // Vector3 position = block.transform.position; position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; block.transform.position = position; block.SetColor((BlockControl.COLOR)color_index); // color_index = Random.Range(0, (int)BlockControl.COLOR.NORMAL_COLOR_NUM); } } // } } で、 Vector3 position = block.transform.position; position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; block.transform.position = position; の部分についてなのですが、Vector3 position = block.transform.position;で参照を渡しているので、block.transform.position = position;が必要ないと思い、コメントアウトした所、同じ位置にブロックが生成されてしまいました。 参照を渡していいるため position.x = -(BLOCK_NUM_X/2.0f - 0.5f) + x; position.y = -0.5f - y; の部分で、block.transform.positionの中身が書き換わっていると思ったのですが違うのですか??

  • イベントリスナーの部分を関数にしたい

    イベントリスナーの部分で、「load」以外に「change」も必要になったので関数にしたいのですが、 引数の関数の指定方法がわかりません。 どうすればいいのでしょうか。よろしくお願いします。 【イベントリスナーを関数にする前】 function hoge(){ this.view = function(){ var _this = this; window.addEventListener( 'load',function(){ _this.foo()}, false ); } this.foo =function(){ var txt = document.createTextNode( this.moji ); document.body.appendChild( txt ); } } var a =new hoge(); a.moji="テスト"; a.view(); 【やってみたこと】 function hoge(){ this.view = function(){ var _this = this; var func = function(){ _this.foo()}; this.addListener( 'window', 'load', func ); } this.addListener = function(elem,type,func){ elem.addEventListener( type,func, false ); } this.foo =function(){ var txt = document.createTextNode( this.moji ); document.body.appendChild( txt ); } } var a =new hoge(); a.moji="テスト"; a.view();

  • actionscriptの配列について

    antionscript初心者ですが、配列について質問があります。 使っているソフトはadobe flash CS3 professionalです。 配列を利用する際に 入力テキストやダイナミックテキストを入れるということはできないのでしょうか? ↓入力テキストの方 Var x: Array=new Array(2); x[0]= ○○.text; x[1]= ●●.text; ↓ダイナミックテキストの方 Var y: Array=new Array(2); y[0]= □□.text; y[1]= ■■.text; そのあとボタンをクリックしたら for(var i : int =0; i<x.length; i++){ if(x[i]>=5){ y[i]="A" }else if(x<5){ y[i]="B" } } というように 入力テキストにいれられた数値に応じてダイナミックテキストに文字を表示させたいのですが、うまくいきません。初心者なので意味不明な質問になっているかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Flash
  • 配列からNULL以外のキーを取得したいのですが……

    配列からNULL以外のキーを取得したいです。 [0, 3]を期待しているのに、[0, 3: 3] で返ってきます。 なんででしょうか? function test(data) {  var result = [];  for (var i = 0, l = data.length; i < l; i++) {   if(data[i] !== null){    result[i] = i;   }  }  return result; } var data = ["1", null, null, "5"]; var last = test(data); console.log(last); ・console.logだから? ・もしそうなら、どうして[ 0: 1, 3: 3] ではないのでしょうか?

このQ&Aのポイント
  • スマホとの接続で製品をアプリに登録する際に問題が発生しています。
  • 製品のwi-fi設定は完了していますが、登録ができない状況です。
  • お使いの環境はiOSであり、無線LANで接続しています。関連するアプリはMobile Connectです。
回答を見る

専門家に質問してみよう