• ベストアンサー

unityでrigidbodyにする方法

みようみまねでjavascriptで下のようなスクリプトを作り(ほとんどコピー)、 球を並べることはできましたが、これらの球が重力や衝突で自然に動くようにしたいのです。、 どうしたらいいのでしょうか? for(i=0;i<10;i++){ var obj=GameObject.CreatePrimitive(PrimitiveType.Sphere); obj.transform.Translate(i*10,30,0); } また、unity初心者用のサイトでお勧めのがありましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

それやるよりもPrefab作ってinstantiateした方が早いと思いますけど... スクリプトはC#でよければ http://www40.atwiki.jp/spellbound/pages/1313.html

arandaspis
質問者

お礼

ありがとうございました。Prefabでやってみました。 だいぶ時間かかってしまいましたが出来ました。 こっち(Prefab)の方が良いのがよくわかりました。 ありがとうございます。

関連する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. こんな感じでエラーがでます。 解決方法を知ってる方は教えてください。おねがいします。

  • Unity2DでX軸を瞬間移動したい。

    javascriptで作業をしています。 どう書けばいいのか分からず、拙いまとめ方ですがお願い致します。 クリック(タップ)で「GO」「BACK」のメッセージを出すスクリプトを其々当てたObjectを一回押すと、 X軸方向へ一定数(-方向と+方向)ポンっと瞬間移動っぽく移動し、 尚且つ、0値以降行かないようなスクリプトを書きたいのですが、 どのようにすれば良いでしょうか・・・・。 メッセージを出すスクリプトは以下です。 public var information : boolean = true; public var touch : boolean; public var target : GameObject; public var message : String; function Start() { touch = false; } function Update() { if (Input.GetMouseButtonDown(0)) { var tapPoint : Vector2 = Camera.main.ScreenToWorldPoint(Input.mousePosition); var collition2d : Collider2D = Physics2D.OverlapPoint(tapPoint); if (collition2d) { var hitObject : RaycastHit2D = Physics2D.Raycast(tapPoint,-Vector2.up); if (hitObject) { Debug.Log("Touch!" + hitObject.collider.gameObject.name); target.SendMessage( message, gameObject ); } } } } どうか宜しくお願い致します。

  • 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++; } }

  • FIREFOXでのpostop

    現在、画像をブラウザ下から上へ移動する制御をJavaScriptにて行っております。 その際、IEでは正常に動作したのですが、FIREFOXで検証した所動作しませんでした。 原因はIEで使用した"posTop"がFIREFOXで使用できたなららしいです。 --------------------------------------------------------------- <script language=javascript> window.onload=move1; var TimeSet1 = 60; var step1 = 65; var stepcnt =0; var pos_data =0; var obj; function move1(){ stepcnt = 0; for (i = 1; i <= 5; i = i +1){ obj = document.getElementById('GridImg'+String(i)); pos_data = obj.style.posTop; pos_data = pos_data - 2; if(pos_data <= 100){ pos_data = 800; } obj.style.posTop = pos_data; } timerID1=setTimeout('move1()',TimeSet1); } </script> -------------------------------------------------------------- 上記を最小減の変更で修正したと思っております。 ご教授宜しくお願い致します。

  • 未選択のプルダウンメニューをアラートしたい

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 フォームで未入力の項目に対してアラート&フォーカスされるようにしました。 ここに『住んでいる県』(プルダウン)を追加したいのですがどうしてもうまくいきません。 <script type='text/javascript'> <!-- function check(frm){ var hissu=Array('name','zip','sex'); var hissu_nm = Array('名前','郵便番号','性別'); var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; if(obj.type=='text' || obj.type=='textarea'){ if(obj.value==''){ alert(hissu_nm[i]+'は必須です'); frm.elements[hissu[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){   alert(hissu_nm[i]+'は必須です'); return false; } } } return true; } //--> </script> どうかお分かりになる方よろしくお願いいたします。

  • 下記のスクリプトを高速にする具体的な方法

    下記のスクリプトを高速にする具体的な方法 現在、特定のクラスを表示、非表示にしたいと 考えております。 下記のスクリプトだとIEでの動作が遅いので改善方法を模索しております。 どなたかご教授ください。 宜しくお願いいたします。 <script type="text/javascript"> var ids = new Array(); ids = ['default','aaa','bbb']; function change(site){ if(!document.getElementsByTagName){return;} var objs = document.getElementsByTagName('*'); var check = ids.join('|'); var re = new RegExp('(?:^|\\s)'+site+'(?:$|\\s)'); for(var i=0; i<objs.length; i++){ var obj = objs.item(i); if(re.test(obj.className)){ obj.style.display = ''; }else{ if(obj.className){ if(obj.className.match(check)){ obj.style.display = 'none'; }else{ obj.style.display = ''; } } } } } </script> <html> <select name="site_change" id="site_change" onchange="change(this.value)"> <option value="default">デフォルト</option> <option value="aaa">aaa</option> <option value="bbb">bbb</option> </select> <div class="aaa bbb">aaa bbb</div> <div class="aaa">aaa</div> </html>

  • javascriptでMYSQLに接続したい

    下記のクリック時に画像を変更するjavascript内で、画像を変更するたびに現在の画像が何かをデータベースに値として格納したいのですがやり方が分かりません。 現在の画像がA.gifだったらデータベースに0を格納、B.gifだったら1を格納するといった仕様です。 どなたかご教授お願いできませんでしょうか? よろしくお願いします。 <script> function change(obj){ var orgimg="B.gif"; var newimg="A.gif"; var imgs=document.getElementsByTagName('img') for(var i=0;i<imgs.length;i++){ if(imgs[i].className==obj.className){ if(imgs[i]==obj) imgs[i].src=newimg; else imgs[i].src=orgimg; } } </script>

  • プルダウンを必須入力にする機能を付け足したい

    テキストボックスなどを必須入力にする以下のコードに プルダウンを必須入力にする機能を付け足したいのですが、 うまくいきません… どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <script type="text/javascript"> function chkHissu(frm){ var hissu=Array("test1","test2"); var hissu_nm = Array("テスト1","テスト2"); var len=hissu.length; for(i=0; i<len; i++){ var obj=frm.elements[hissu[i]]; if(obj.type=="text" || obj.type=="textarea" ){ if(obj.value==""){ alert(hissu_nm[i]+"は必須入力項目です"); frm.elements[hissu[i]].focus(); return false; } } } return true; } </script> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 素人考えで、 var hissu=Array("test1","test2","test3"); と var hissu_nm = Array("テスト1","テスト2","テスト3"); ifの部分に単純に obj.type=="select"を追加するだけではできませんでしたm(_ _)m 何か簡単でもいいので、解説いただけると大変喜びますm(_ _)m よろしくお願いいたします

  • Unity初心者ですコンパイルエラーで詰まってます

    HPを参考にシューティングゲームの勉強をしています。 そこでUnityのGameシーンで自機を動かしたり背景を付けたりは上手く行ったんですけど、次の背景を動かすというところで詰まりました。Background c#スクリプトを作成して  using System.Collections; using System.Collections.Generic; using UnityEngine; // 背景を制御するコンポーネント public class Background : MonoBehaviour { public Transform m_player; // プレイヤー public Vector2 m_limit; // 背景の移動範囲 // 毎フレーム呼び出される関数 private void Update() { // プレイヤーの現在地を取得する var pos = m_player.localPosition; // 画面端の位置を取得する var limit = Utils.m_moveLimit; // プレイヤーが画面のどの位置に存在するのかを、 // 0 から 1 の値に置き換える var tx = 1 - Mathf.InverseLerp( -limit.x, limit.x, pos.x ); var ty = 1 - Mathf.InverseLerp( -limit.y, limit.y, pos.y ); // プレイヤーの現在地から背景の表示位置を算出する var x = Mathf.Lerp( -m_limit.x, m_limit.x, tx ); var y = Mathf.Lerp( -m_limit.y, m_limit.y, ty ); // 背景の表示位置を更新する transform.localPosition = new Vector3( x, y, 0 ); } } を自分で打った時にコンパイルエラーが出たのでそのままコピーして 再度再生してみたらやっぱりcs 0117 で翻訳したら 画面端の位置を取得する所のm_moveLimitが定義されていませんという内容でした。 見本をそのままコピーしたので間違いが解りません。 ネットで調べたらpublic class Background をMy Backgroundに変えて解決出来ますとあったので試しましたが駄目でした。 本当は一からC#を勉強していけば解る問題かもしれないですけど まずは人の真似から段々と覚えていきたいのでこういう勉強方法を取っています。 Unityのバージョン内容もよく変わって使えない言葉が出てエラーに なったりもあるみたいなのでバージョンの関係もあるんでしょうか??。私が使っているのは2020.1.2f1です。 どうかUnityに詳しい方のお力をお貸し下さい。 よろしくお願いいたします。

専門家に質問してみよう