1 名前:名前は開発中のものです。 mailto:sage [2014/06/26(木) 23:02:03.72 ID:t35CWy1R.net] 3Dゲームエンジン「Unity」の質問に優しく答えるスレです。 Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。 フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。 プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他 次スレは>>970 を踏んだ方が建てること。ダメなら>>980 か>>990 が建てて下さい。 ■前スレ 【3Dゲームエンジン】Unity質問スレッド9 peace.2ch.net/test/read.cgi/gamedev/1399506271/ ■本スレ 【3Dゲームエンジン】Unity総合スレッド22 toro.2ch.net/test/read.cgi/gamedev/1395140574/ ■Unity 2ch Wiki(まとめ、過去ログ、リンク集) www24.atwiki.jp/unity2ch/ ●リンク ・Unity(日本公式サイト) unity3d.com/japan/ ・ユーザーガイド&リファレンス japan.unity3d.com/developer/document/ ・チュートリアル japan.unity3d.com/developer/document/tutorial/ ・スクリプトリファレンス docs-jp.unity3d.com/Documentation/ScriptReference/ ・FAQ answers.unity3d.com/index.html ・MSDN msdn.microsoft.com/ja-jp/ms348103 ←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
52 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 19:46:49.19 ID:g+sRFGLs.net] >>49 レスありがとうございます。 なんというか、インターフェイスって実体を持てないので変数宣言できませんよね? なので普通プロパティを使うんですよね(get;set) この辺りと、RPGにおけるHPなどの仲間共通のパラメータがどのような 実装になるのかイメージが湧きません・・・ HPとかMPって変数に入れるキャラ単位の定数であって処理じゃないので それをインターフェイスでどのようにすれば・・・と数時間考えてましたが ちょっと今の私には技術的に難しいようですし、作りたいものもそんな複雑な ゲームじゃないので、全味方のパラメータをコンテナ化したコンテナクラス一つ作って 各キャラは、そのコンテナにある自分のパラメータを見に行くようにする、という結論に達しました まだはじめて間もないので今後C#に慣れてきて、インターフェイスとか抽象クラスを もっと理解できてきたら、処理を変更しようと思います せっかくアドバイス頂いたのにすみません
53 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 20:55:09.08 ID:TXgKbcyL.net] >>51 public interface IPlayerParty { int hp { get; set; }; int dex { get; set;}; // bra bra bra } public class SomeNPCanForPartyCharacter : MonoBehaviour , IPlayerParty { // bra bra bra } こんなふうに組んでおいて, public class PlayerCharactor : MonoBehaviour { private List<IPlayerParty> _partyMember; } こんな事をプレイヤーが制御するキャラクタで持っていればパーティメンバーは扱えるよね?
54 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 20:58:56.31 ID:LZ7/FrJO.net] Timeクラスのtimeを目視したいんですが Debug.Log(Time.time)とかキャストして表示させようとしてもエラーがでます 一体どうなってるんですか
55 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:08:22.02 ID:13iiBkAp.net] unityってメソッドの最初の一文字が大文字なのが違和感ありまくり。 あと、変数名も。 最近はこれがスタンダードなの? おじさん困惑中。
56 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:14:30.19 ID:TXgKbcyL.net] >>54 C#文化なんでソコに文句言われても困る。 自分もメソッド名は小文字で始めたいわいと思うけどコーディングルールのMS標準に合わせるとそう成らざるを得ないよ。 Javaだったら非難囂々だよねー
57 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:25:06.89 ID:LZ7/FrJO.net] クラス名と同じTimeをスクリプトのファイル名にしてたせいでした 事故解決
58 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:30:21.05 ID:g+sRFGLs.net] >>52 ありがとうございます。 正直、そのコードの理解も厳しいので、もうちょっとUnityというか C#について頑張ってきます そのコードについての質問はUnityでなくC#の質問になると思うので ここでの質問は控えます ありがとうございました
59 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:39:39.95 ID:1D2Rjobc.net] え?Javaってメソッドや変数名が小文字なの?キモすぎる C#に慣れ過ぎだとこれ
60 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:40:52.45 ID:1D2Rjobc.net] 小文字じゃねえ小文字から始まるの、です
61 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 21:50:15.58 ID:GbXFYWlE.net] あれ、俺変数名やプロパティはパスカルケースじゃなくキャメルでやってた 混ざってたのかw
62 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 22:36:30.61 ID:UYHm+SxB.net] AnimatorのトランジションInspector上でatomicのチェックを外しておくと 複数のトランジションが伸びているステートなら、一方のトランジションを再生中でも中断して他のトランジションに移れるそうですが 移行するトランジション優先度はどうやって指定するのでしょうか
63 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 22:37:37.38 ID:ClpQhuQb.net] >>57 ほかの人が答えてくれてた。 今は、コードデザインに興味を持つ若手が非常に不足してます。 将来のメインプログラマ不足につながってしまうので、ぜひ頑張ってくれー。
64 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 22:43:40.91 ID:h58mMhhZ.net] >>61 ASSETをかえばできるんじゃないでしょうか
65 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 23:14:23.88 ID:LZ7/FrJO.net] これ何時間くらい勉強すればUniのスクリプトマスターできる? まだtransformとかtimeとかグラビチィとかLookAtとかのレベルなんだけど
66 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 23:38:07.68 ID:ClpQhuQb.net] ゲームプログラマは、かかっても1週間もあれば自由に使えるようになるな。 後は調べながらだよ。
67 名前:名前は開発中のものです。 mailto:sage [2014/06/28(土) 23:58:38.04 ID:g+sRFGLs.net] >>64 プログラム全くやった事ないド素人で、1日2時間くらいやって 今3週間目くらいですけど、上手なプログラムとかやり方を選ばなければ ウインドウ処理以外のRPGの基本処理はできるようになりました ウインドウ(UI)処理(NGUI)はほんと意味が分からない・・・ unityのスクリプトよりNGUIを使えるか、という方がはるかに不安です
68 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 00:07:22.26 ID:j0JGUa9n.net] ライブラリはひと月もあればだいたい把握できるだろうけど それができるようになるレベルまでには、全力でやる気注げても2年くらいはかかりそう 全力が続かず散発的に触ってたらさらにもりもり時間かかりそう
69 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 01:28:06.84 ID:xlD1U1/P.net] >>66 アセットを買えばプログラムの知識はいりませんよ
70 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 01:38:41.87 ID:sLVZnAPY.net] >>55 MSのコーティング規約かー。なるほど。 Java専門だったけど、郷に入っては郷に従え。MSコーディング規約に合わせるべさ。
71 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 02:13:04.41 ID:PBgWw+BZ.net] オブジェクトの回転がむずい
72 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 02:18:13.46 ID:xlD1U1/P.net] >>70 アセットを買うと回転も簡単だよ
73 名前:61 mailto:sage [2014/06/29(日) 02:50:01.03 ID:V0nwOHaK.net] 自己解決しました これマニュアルに載ってない気が・・・
74 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 09:31:00.80 ID:sLVZnAPY.net] >>72 どう解決したのか、わたし気になります!
75 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 10:50:05.17 ID:ID49xzQdJ] 助けてぇ。。。。ビルド出来るけど出来ないよぉ(困惑) Unityエディタ上での実行は問題ないのに、WebPlayerやexe形式などでビルドしようとすると error CS0103: The name `UnityEditor' does not exist in the current context error CS1061: Type `object' does not contain a definition for `path' and no extension method `path' of type `object' could be found (are you missing a using directive or an assembly reference?) とかで怒られる。MonoDeveloperで見る限りは Assembly-CSharp Assembly-CSharp-Editor Assembly-CSharp-firstpass のそれぞれのReferencesにUnityEditor.dllはちゃんと存在してる感じ。 詳細な経緯は以下のとおりです。 1) Unity4.3.4からUnity4.5.1へアップデート 2) そのまま平和な日々が過ぎていく 3) Windowsが起動失敗→復元ポイントまで戻すで復元 4) Unityのバージョンが4.3.4まで巻き戻る 5) 4.5.1へアップデート 6) 上記のビルド出来ない病が発病 7) 4.5.1アンインストール後、4.3.4インストール 8) 治らない; 9) 4.3.4アンインストール後、4.5.1インストール 10) 治らない;;
76 名前:74 mailto:sage [2014/06/29(日) 12:54:21.90 ID:ID49xzQdJ] >>74 自己解決しました。 原因は経緯と全く関係なく、スクリプトのファイル形式でした。 どこで、そうなったかわかりませんが、 UTF-8(BOMなし)形式で保存されていたのを、 UTF-8(BOMあり)形式に変換して保存しなおしたら問題なくWebPlayerやexe形式へビルドできるようになりました。 お騒がせしました。 よかったよおおおお;;
77 名前:名前は開発中のものです。 [2014/06/29(日) 17:05:58.70 ID:W6QLaLK8T] 初心者ですjapan.unity3d.com/developer/document/tutorial/2d-shooting-game/mobile/04.html 上記の公式チュートリアル通りに2Dシューティングにバーチャルジョイスティックを実装してみました。 androidで動作確認してみると、ジョイスティック入力と画面上での自機の移動に少しズレができてしまい操作性が悪く困っています。 良い方法はありますか? 低レベルな質問かもしれませんがお願いします。
78 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 18:39:51.50 ID:V0nwOHaK.net] アニメーションステートのInspectorにTransitionのリストがあって 遷移先はリストの上にあるものが優先される(Atomicを外したTransitionを再生中の時のみ) リストはドラッグ&ドロップで入れ替えられる メカニムでキャラの動き制御するなら結構重要だと思うんだけどマニュアルにも載ってないしググっても出ない
79 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 18:42:12.58 ID:4QjtsUPR.net] >>77 アセットストアで検索したらいいと思いますよ
80 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 18:47:37.07 ID:tXtNTezB.net] ここは「氷菓」のウンカス、チタンダエルを愛でるスレです。 ★チタンダエル (CV:くぱぁマン子) 成り上がりチョン名家のひとつ、剛毛恥嘆惰毛の一匹。 普段は黒々としたウンコだが、一度興味をひかれる男に出会うと その細く吊り上がった瞳を濁らせて劣情の権化と化す、性欲旺盛なビッチ。 決まり文句は「わたし、痔になります」。
81 名前:名前は開発中のものです。 [2014/06/29(日) 18:58:55.51 ID:n5E22NIZY] 意味がわからないよ〜 GameObject retChild = gameobject.transform.FindChild("子の名前").gameObject; このプログラムや他のオブジェクトを取得する文を入力するのだけど、 どうやっても改善できないよ〜 エラー文は以下の通りです。 Assets/waveenemy.js(19,19): UCE0001: ';' expected. Insert a semicolon at the end.
82 名前:名前は開発中のものです。 [2014/06/29(日) 19:02:52.93 ID:n5E22NIZY] すみません、80ですがやりたいことを記入してなかったので、追記します。 HPのバーをダメージを受けるたび減らしたいのですが、 バーを呼び出そうとするとエラーになりました。 キャラ本体とバーは別物なので、どうするといいでしょうか? セミコロンはつけてるのに、エラーになります。 functionのすぐ下に書いても同じです。
83 名前:名前は開発中のものです。 [2014/06/29(日) 20:24:40.34 ID:BwfVhPXR.net] シーン遷移時にフェードアウトさせてるんですが、 フェードアウト中に他のボタン、例えば前のシーンに戻るボタンや別ステージへ移動するボタンを無効にしたいです。 現在は一つ一つにpublicなboolをつけてシーン遷移時に全てfalseする方法をとっています。 もっと簡潔な方法あったらお願いします。
84 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 20:59:25.18 ID:4QjtsUPR.net] >>82 アセットを買うのが一番簡潔な方法ですよ
85 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 22:19:39.43 ID:9oDHnJ4j.net] >>82 NGUIなら不可視の全画面のWidget作ってコリダーを付けておき一番手前に置いておけば良いだけ
86 名前:名前は開発中のものです。 [2014/06/29(日) 22:55:19.03 ID:BwfVhPXR.net] >>84 unityの2dでやってます。 コライダー付きのゲームオブジェクトをフェード前に配置する感じにしてみます。 ありがとう。
87 名前:名前は開発中のものです。 mailto:sage [2014/06/29(日) 23:27:23.66 ID:9oDHnJ4j.net] >>85 基本はUIイベントに到達するまえにタップやクリックを食って捨てるだけなので、ButtonMaskとか言うオブジェクトをヒエラルキーのTopLevelに置いておいてそれをSetActiveでOn,Offするのが楽かもね GameObject mask = GameObject.Find("/ButtonMask"); で持ってくる感じ
88 名前:名前は開発中のものです。 [2014/06/29(日) 23:38:39.13 ID:BwfVhPXR.net] >>86 やり方まで書いてもらってどうもありがとうございます。 これでやってみます。
89 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 01:08:56.97 ID:1W4uEawq.net] NGUIのUIって普通にインスタンスで呼び出し→Destroyで消去 していいんですよね? 「スペースキー押すとUIをInstantiateで表示し、表示した状態で もう一回スペースキーを押すとDestroyでUI消去する」という処理を作りました 結果は、表示は問題ないのですがスペースキーを押してもUIが消えない 事があります。 正確には、消えたり消えなかったりという感じです。 スペースキー連打してたら消えるのですが・・・。 そのUI表示時にスペースキー押してUIを消そうとした時、デバッグのエラーに 「Destroying GameObjects immediately is not permitted during physics trigger /contact, animation event callbacks or OnValidate. You must use Destroy instead.」 というエラーメッセージが必ず出ます 何が悪いんでしょうか?(もしかしてNGUIのUIはDestroyしたらダメなんですか?)
90 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 01:12:17.67 ID:i9hyodfO.net] >>77 なるほど、ありがとん!
91 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 01:35:52.30 ID:mwLmwaX9.net] >>88 簡単に書くとNGUIのイベントの中で自分をDestroy してはいけませんって事 もしすぐにぶちこわしたいのなら gameObject.SetActive(false); で非表示にしてから StartCoroutine("DeleyedDestroy"); みたいにコルーチンを呼び出して IEnumerator DeleyedDestroy() { yield return null; Destroy(gameObject); } と1フレーム遅くに破壊しないと駄目
92 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 01:45:56.31 ID:A3spulFo.net] 俺は親のPanelにSendMessageするなりメソッド直接呼ぶなりしてDestroyしてる そういうエラーは出てないからこれでいいはず…いいよね?
93 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 01:59:32.14 ID:gCDT1VPE.net] >>78 それ質問じゃないですよアセットおじさん
94 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:04:49.85 ID:Q4WnWElN.net] >>92 Assetを購入すれば質問になりますよ
95 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:17:23.83 ID:1W4uEawq.net] >>90-86 ありがとうございます。 NGUIって、普通に文章を表示する、ボタンを付けるという 凝った使い方しない場合はNGUI -> Scripts内のスクリプトって 弄る必要ないですか? インスペクタだけ弄ってれば一般的なUI機能は使えますか?
96 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:28:54.98 ID:mwLmwaX9.net] >>94 Assets/NGUI/Scripts/*/*.csの事? 余程特殊(継承したクラスで継承元のprotectでない変数見たいとか)な事しないかぎり普通変更しないよ
97 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:30:18.33 ID:1W4uEawq.net] >>95 はい、その事です 通常はやはりインスペクタで調整するのですね ありがとうございました。
98 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:51:01.55 ID:1W4uEawq.net] すみません、>>90 を実行してみたのですがやはり同じエラーが出て すんなりとはUIが消えてくれません。 デバッグ見るとNGUITools.csの static public void DestroyImmediate (UnityEngine.Object obj) { if (
99 名前:obj != null) { ★if (Application.isEditor) UnityEngine.Object.DestroyImmediate(obj); else UnityEngine.Object.Destroy(obj); } } ★でエラーが出ていました。 これはNGUIどうのではなく、UIの呼び出し条件、もしくは消去条件のif文あたりが 問題あるのでしょうか? [] [ここ壊れてます]
100 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 02:56:27.05 ID:Q4WnWElN.net] >>97 Assetを購入することでエラーも出なくなりますよ
101 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 04:27:24.95 ID:PlJB/HNp.net] このレベルの人間がアプリ作る時代だもんな Unityは罪深いソフトだよ
102 名前:名前は開発中のものです。 mailto:aaa [2014/06/30(月) 05:17:10.38] 現在2Dで開発しています、 壁に当たった際に、キャラを右移動から下移動に切り替えるようにプログラム していますが、よく見ると下だけではなく跳ね返って左側にも少し移動しています。 これは仕様なのでしょうか? 跳ね返り係数は0にしているはずですが、壁に当たり摩擦したように 速度が落ちることがあるのでないようにしたいです。 ちなみに、移動のための文は以下の一文の向きを変えてます。 transform.Translate(Vector3.right * 3 * Time.deltaTime);
103 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 06:06:06.66 ID:xbMO5WXk.net] 裾野が広がるのはいいことだけど 何でもかんでも質問する人には困るよな ヒントもらったら自分で何とかしろ
104 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 06:26:37.61 ID:PlJB/HNp.net] 教えて君はダメだな
105 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 09:08:37.35 ID:A3spulFo.net] とりあえずNGUIを入れ直した方がいいんじゃないか
106 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 09:22:50.74 ID:PtdaEyYt.net] 敵をtransform.LookAtでこちらを向かせ transform.forwardでこっちに向かって来るというようにしたいのですが、 床に沈んでしまいます。 colliderの調整、rigidbodyのconstraintsのfreeze positionのYにはチェックを入れています。 床に沈まないようにするためにはどのようにすればよろしいのでしょうか?
107 名前:98 mailto:sage [2014/06/30(月) 09:32:55.86 ID:PtdaEyYt.net] >>104 自己解決いたしました。 ありがとうございます。
108 名前:名前は開発中のものです。 [2014/06/30(月) 12:04:32.92 ID:tC9m33Xe.net] ◎2chスレッド勢いランキングサイトリスト◎ ★+ニュース板 ・ 2NN (推薦) ・ 2chTimes ★+ニュース板新着 ・ 2NN新着 ・ Headline BBY ・ unker Headline ★+ニュース板その他 ・ Desktop2ch ・ 記者別一覧 ★全板 ・ 全板縦断勢いランキング (推薦) ・ スレッドランキング総合ランキング ・ ログ速 ★全板実況込み ・ 2勢 (推薦) ・ READ2CH ・ i-ikioi ※ 要タイトル名検索 ※ 2chブラウザ併用推奨
109 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 14:20:06.55 ID:ALw2LC0O.net] アセットを買おうとしたらガムロードに誘導されたんですが ここはPayPalは使えないんでしょうか? アセットストアから買ったほうがいい?常に最新ではないみたいだけど
110 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 19:35:37.91 ID:UQ1OJf+x.net] maかfbxからライトのデータを取り込むことってできますかね ライティングはunity内で調整するしかない?
111 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 19:40:15.99 ID:MG2Qxsma.net] >>108 アセットを買えばできるとおもいますよ
112 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 21:54:47.32 ID:mwLmwaX9.net] >>97 遅延評価しても駄目って事?(遅延評価の意味わかんないとちょっと論外) エラーが自分を起点にしている呼び出しの中でImmidiate(即時)のDestroyは駄目って言う事を理解している? ゲーム用のUIコードをUnity以外で書いた事あればすぐに何が悪いかわかるんだけど、コレは説明が難しいかもしらん。
113 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 22:42:41.46 ID:1W4uEawq.net] >>110 すみません、ゲーム制作した事ないので初心者です・・・ 完全に知識不足のようなので、とりあえずこの問題は後回しにしようと思います ボタン連打すれば一応、閉じる事はできるのでゲーム進行不能になるわけではないですし >エラーが自分を起点にしている呼び出しの中でImmidiate(即時)のDestroyは駄目って言う事を理解している? 半分は理解しているつもりです 「自分を起点」というところがちょっと理解できてないです
114 名前:名前は開発中のものです。 [2014/06/30(月) 23:03:48.33 ID:PlJB/HNp.net] あきらめろん
115 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 23:07:26.15 ID:mwLmwaX9.net] >>111 ボタンスクリプトのイベント拾ってその中でDestroy呼んでるのが駄目って事(発生元と消失が一緒) そうなってない?
116 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 23:08:14.89 ID:MG2Qxsma.net] >>111 アセットを買えばそんなの気にしなくてすむよ
117 名前:名前は開発中のものです。 mailto:sage [2014/06/30(月) 23:38:22.83 ID:1W4uEawq.net] >>113 なるほど でも発生元はオブジェクトAのInstantiateで消す時は 同じオブジェクトA内で>>90 ですね Instantiateしてからオ同じブジェクトAでDestroyしても 発生元と消失が同じとなるんでしょうか
118 名前:85 mailto:sage [2014/07/01(火) 03:55:59.52 ID:nHreHfmg.net] >>115 そりゃ君の書いたコードに依存してるので僕からは何とも言えない。 どうしても添削して欲しいならどこかでコードを晒す以外に無いよ。
119 名前:名前は開発中のものです。 [2014/07/01(火) 11:11:04.26 ID:85UR2RLR.net] javascriptで作業しています。 "open_switch"が"false"の場合 "motion_00"を再生します。 2秒したら再生としたいのですが、 下記のように書くとエラーが出てしまいます。 どのように書けばよいでしょうか。。。 宜しくお願いいたします。 var obj:GameObject; var script:window_control; function Start () { if(!obj){ obj=GameObject.FindGameObjectWithTag("untagget"); } script=obj.GetComponent("window_control"); } function Update () { if(script.open_switch==true){ animation.Play("motion_01"); } else{ yield WaitForSeconds(2.0); animation.Play("motion_00"); } }
120 名前:名前は開発中のものです。 [2014/07/01(火) 11:12:58.80 ID:85UR2RLR.net] 111 です。 説明が足りませんでした。 2秒後ということで、 ”yield WaitForSeconds(2.0);”と書くとエラーがでます。 こちらを書かないと、実行可能です。 宜しくお願いします。
121 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 12:14:02.96 ID:wmLFBxvR.net] 天安門事件
122 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 12:30:14.74 ID:pEsB09th.net] そのyieldはどこに制御を返してるんだよ
123 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 13:33:09.43 ID:SbtrGu4q.net] >>116 // ================== // コリジョン // 機能:プレイヤーヒット時に会話UIメソッドをコールする // ================== void OnCollisionStay2D ( Collision2D col ){ // 衝突相手がプレイヤー if(col.gameObject.tag == "Player") { if(GameObject.FindWithTag ("UI") == null && PlayerFlag == 1) //PlayerFlagは操作プレイヤー側のフラグ。プレイヤーがボタンを押した場合にON { // 会話UI表示メソッド Kaiwa(); } if(GameObject.FindWithTag ("UI") != null && PlayerFlag == 0) //UI表示時にプレイヤーが再度ボタンを押した場合にクリア { // 会話UI消去メソッド KaiwaDel(); } } }
124 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 13:51:18.75 ID:SbtrGu4q.net] 続きです // ================================================= // 会話UI表示メソッド // ================================================= void Kaiwa (){ // 会話ウィンドウ表示 Instantiate(Resources.Load("6.prefabs/UI_1"), windowPos, Quaternion.identity); } // ================================================= // 会話UI消去メソッド(開始) // ================================================= void KaiwaDel (){ // UIを非アクティブ GameObject.FindWithTag("UI").SetActive(false); // 消去メソッド本体コール StartCoroutine("DelMessage"); } IEnumerator DelMessage (){ yield return null; Destroy(GameObject.FindWithTag("UI")); } というコードをコリジョンされる側に書いています(される側毎に別メッセージを表示するため) 何かおかしな箇所などありますでしょうか
125 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 18:34:44.20 ID:6DDxUZVh.net] つか・・・もうそろそみんなGitHub使おうよ
126 名前:名前は開発中のものです。 [2014/07/01(火) 19:36:17.39 ID:85UR2RLR.net] >>120 "yield"は、このスクリプトが 当てはめられている、ゲームオブジェクトに流れている
127 名前:モーション ”if”部分の”motion_00” を2秒待って、次のモーションを流したいと考えています まだ勉強初めたばかりで、上手く伝えられず申し訳ないです。 また"yield"を使わないでも、制御できるなら、 その手法も教えていただけるとありがたいです。 [] [ここ壊れてます]
128 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 19:37:02.27 ID:nHreHfmg.net] >>122 そのコードだけ見てる分には原因がつかめないね。 エラーが起きたときのスタックトレース(コンソールでエラーをクリックして表示される詳細)も付けてくれると少しは見えてくるかもしれない。
129 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 19:37:45.45 ID:nHreHfmg.net] >>124 void Updateの中でyieldしちゃだめじゃないのかな
130 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 19:53:51.32 ID:SbtrGu4q.net] >>125 レスありがとうございます。こちらになります。 i.imgur.com/TPLQJEH.png もしかしてコードの問題ではなく、NGUIで構成したUIオブジェクトの作り方に 問題があるんでしょうか 正直、一つのサイトだけでは意味不明だったので色んなサイトを参考にして つぎはぎのような感じで作ったので・・・ UI_1:子を含めた全ての管理(詳細は理解できていません) Camera:UIのみを映すカメラ(画面に対する位置はこれで決める?) Sprite:UIの背景画像オブジェクト(画面に対するUI本体の大きさとかはここで決める?) Label:UIに表示する文字であるフォントオブジェクト(フォントの種類や大きさはここで決める) という認識で作りました。
131 名前:名前は開発中のものです。 mailto:sage [2014/07/01(火) 19:59:02.35 ID:ld0xYEoC.net] >>126 多分これ 例えばhanteiって関数を作って、update内を移植 でupdate内でhanteiを実行する
132 名前:名前は開発中のものです。 [2014/07/01(火) 22:52:30.64 ID:OEeCJUKWv] >>128 アドバイスありがとうございます。 ちなみに、2秒後に("motion_00")を再生させるには、 具体的にはどのように関数を入れればよいでしょうか。。。 宜しくお願いします。 var obj:GameObject; var script:window_control; function Start () { if(!obj){ obj=GameObject.FindGameObjectWithTag("untagget"); } script=obj.GetComponent("window_control"); } function Update () { if(script.open_switch==true){ animation.Play("motion_01"); } else{ yield WaitForSeconds(2.0); animation.Play("motion_00"); } }
133 名前:名前は開発中のものです。 [2014/07/01(火) 22:38:10.43 ID:85UR2RLR.net] >>128 アドバイスありがとうございます。 ちなみに、2秒後に("motion_00")を再生させるには、 具体的にはどのように関数を入れればよいでしょうか。。。 宜しくお願いします。 var obj:GameObject; var script:window_control; function Start () { if(!obj){ obj=GameObject.FindGameObjectWithTag("untagget"); } script=obj.GetComponent("window_control"); } function Update () { if(script.open_switch==true){ animation.Play("motion_01"); } else{ yield WaitForSeconds(2.0); animation.Play("motion_00"); } }
134 名前:名前は開発中のものです。 [2014/07/02(水) 00:36:45.57 ID:hSzZV3yyk] unityでFPSを作っているものです。 ネットで見つけたサンプルのスクリプトを改良して、 以下のような弾を発射するスクリプトを書いたのですが、 インスタンス化をする場所の、座標の指定をどのようにして行うのかわかりません。 どなたかご教授していただけませんか? #pragma strict var bulletPrefab:GameObject; var kankaku:float; var shotSE : AudioClip; var startTime:float; var owaruTime:float; var zikan:float; var initialVelocity:float; function start () { owaruTime = Time.time;} function Update () { startTime = Time.time; zikan = startTime - owaruTime; if(zikan>kankaku) if(Input.GetButton("Fire1")){ audio.PlayOneShot(shotSE); var bullet:GameObject=Instantiate(bulletPrefab,transform.position,transform.rotation); var direction:Vector3=transform.forward; bullet.rigidbody.velocity=direction*initialVelocity; owaruTime = Time.time;} }
135 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 00:39:34.86 ID:QoBd/2mX.net] >>130 具体的に言うとアセットを買えばいいと思うよ
136 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 00:47:38.76 ID:pKyuPS5V.net] どうやったら2秒後に特定の処理を走らせるか なんて 誰が書いても大して変わらないし初心者には良い練習問題だと思うけどな
137 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 01:17:15.93 ID:N3YXxu3x.net] >>130 この辺とかは参考になると思う ttp://gamesonytablet.blogspot.jp/2012/12/unity.html とりあえずコピペすれば動くコードよこせとかやってちゃ 進歩はない。
138 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 01:37:55.46 ID:wjodTEe/.net] >>130 function Update () { if(script.open_switch==true) { animation.Play("motion_01"); } else { yield StartCoroutine("Wait"); } } function Wait () { yield WaitForSeconds(2.0); animation.Play("motion_00"); } これでいけるのでは? 私も上で質問しまくってる初心者ですしCSで書いてるので 保証できませんが今コンパイルしたらエラーは出ませんでした。 yield StartCoroutine("Wait");はWait();でもいいのかもしれません JSはStartCoroutineでコールしなくてもいいような記述がありましたので
139 名前:名前は開発中のものです。 [2014/07/02(水) 01:45:44.05 ID:+FRMTuKVe] >>134 実はそちらのページも見ていて、 "Invoke"を利用して書いてみたのですが、 動きませんでした。 下記の形だと"else"の場合も2秒後になってしまいます。。。 var obj:GameObject; var script:window_control; function Start () { if(!obj){ obj=GameObject.FindGameObjectWithTag("untagget"); } script=obj.GetComponent("window_control"); //2秒後にモーションを再生 Invoke("Motiontimer", 2); } function Motiontimer () { if(script.open_switch==true){ animation.Play("motion_01"); // } } else{ animation.Play("motion_00"); } }
140 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 01:39:58.83 ID:N3YXxu3x.net] それでも多分動くけど延々コルーチン呼び出すよねw
141 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 01:44:47.69 ID:wjodTEe/.net] script.open_switchをtrueにしなければそうなりますが 恐らく判定を省略しているのでは? 私も全部は行数オーバーで1回でレスできないので略す事が多いので・・・
142 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 02:03:19.53 ID:N3YXxu3x.net] でもscript.open_switchをtrueに戻しちゃうと即 animation.Play("motion01"); が効いてmotion00は1フレームだけしか再生されなからな〜。 まぁきっと色々省略してるんだよなw
143 名前:名前は開発中のものです。 [2014/07/02(水) 02:25:46.30 ID:+FRMTuKVe] >>136 アドバイスありがとうございます。 下記のような形で書いてみましたが、 "motion01"が再生されないですね。。。 自分でも調べてみます。 また、"motion00"はもともと静止モーションなので 1F再生でも大丈夫です。 var obj:GameObject; var script:window_control; function Start () { if(!obj){ obj=GameObject.FindGameObjectWithTag("untagget"); } script=obj.GetComponent("window_control"); } function Update () { if(script.open_switch==true){ animation.Play("motion_01"); } else{ yield StartCoroutine("Wait"); } } function Wait () { yield WaitForSeconds(2.0); animation.Play("motion_00"); }
144 名前:名前は開発中のものです。 [2014/07/02(水) 02:33:39.23 ID:+FRMTuKVe] >>135 140です。 実行自体は出来ますが、 "Script error (panel_control): Update() can not be a coroutine." コールーチン出来ないと出てしまいます。
145 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 04:51:39.34 ID:uZr6i5PP.net] C#とjsどっちで書いたらいいんよ 差はあるんか?
146 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 05:08:09.00 ID:QoBd/2mX.net] >>142 アセットを購入すると差がなくなったりすると思います
147 名前:名前は開発中のものです。 [2014/07/02(水) 05:09:48.86 ID:VPrZ3A9M.net] まあC#だろうな
148 名前:名前は開発中のものです。 [2014/07/02(水) 05:55:10.24 ID:+FRMTuKVe] 140です。 コルーチンというものを、 一通り読ましていただき、 下記のように記入し無事解決しました。 アドバイスを色々いただき、ありがとうございます! function Update () { if(script.open_switch==true){ StartCoroutine("Wait"); } else { animation.Play("motion_00"); } } function Wait(){ yield WaitForSeconds(2.0); animation.Play("motion_01"); }
149 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 07:24:57.54 ID:Q9Mkocfr.net] 処理速度の差はないという話は何度か出た あとこのての話は、回答者の自分が好きな言語を勧めてくる展開になるので決着はない。 Booこそ至高。
150 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 08:06:04.92 ID:EWc2yUWa.net] 黄色い本にはUnityはJスクが一番効率が良くなるように作られてるとか書いてあったな 俺は単に読み慣れてるからC#
151 名前:名前は開発中のものです。 mailto:sage [2014/07/02(水) 13:08:50.30 ID:uZr6i5PP.net] C#で攻めるぜありがとう
152 名前:名前は開発中のものです。 [2014/07/02(水) 16:06:45.90 ID:hSzZV3yyk] すいません・・・>>131 です。 書き忘れていましたが言語はjavascriptです。 おそらく↓の行を変えればいいのだろうというのは分かるのですが、 どのサイトを見ても具体的に解説してくれている場所がありませんでした。 var bullet:GameObject=Instantiate(bulletPrefab,transform.position,transform.rotation);