1 名前:名前は開発中のものです。 [2016/12/13(火) 22:34:52.47 ID:X+rEJddk.net] 3Dゲームエンジン「Unity」の質問に優しく答えるスレです。 質問・回答・お礼以外はスレチなので総合スレでどうぞ Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。 フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。 プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他 次スレは>>970 を踏んだ方が建てること。ダメなら>>980 か>>990 が建てて下さい。 ■本スレ 【3Dゲームエンジン】Unity総合スレッド29 echo.2ch.net/test/read.cgi/gamedev/1481616486/ ■Unity 2ch Wiki(まとめ、過去ログ、リンク集) www24.atwiki.jp/unity2ch/ ●リンク ・Unity(日本公式サイト) unity3d.com/jp ・マニュアル docs.unity3d.com/ja/current/Manual/index.html ・チュートリアル unity3d.com/jp/learn/tutorials ・スクリプトリファレンス docs.unity3d.com/ja/current/ScriptReference/index.html ・FAQ unity3d.com/jp/unity/faq ・MSDN msdn.microsoft.com/ja-jp/ms348103 ←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。 前スレ 【3Dゲームエンジン】Unity質問スレッド27 echo.2ch.net/test/read.cgi/gamedev/1477131311/
2 名前:名前は開発中のものです。 mailto:sage [2016/12/14(水) 08:49:27.64 ID:rfvEIMgQ.net] こつちはキチガイ用?
3 名前:名前は開発中のものです。 mailto:sage [2016/12/16(金) 14:50:52.94 ID:8f8SSfqY.net] ワッチョイにしろや無能
4 名前:名前は開発中のものです。 mailto:sage [2016/12/17(土) 03:11:48.77 ID:6UFyvISI.net] >>3 ワッチョイスレは板設定上立てられない ここで導入するように言ってくれ ■ ゲーム製作技術板自治04 echo.2ch.net/test/read.cgi/gamedev/1469698797/
5 名前:名前は開発中のものです。 [2016/12/22(木) 11:11:29.21 ID:zojU7DGn.net] unity内に表示されているスフィア(sphere01)をキーボードの方向キーを使って動かしたいです。 動かし方としては方向キーを押してる間回って、離すと止まるようにしたいです。 下のようにとりあえず、右に動かせるように書いてみたんですけど、どうにも上手くいきません、どうしたら動くようになりますか? それと今のこのプログラミングですと、方向キーを押してもまったく反応しません。 using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class move : MonoBehaviour { void Start() { } void Update() { if (Input.GetKey(KeyCode.DpadRight))//キーボード { Transform.Rotate(Vector3.right * Time.deltaTime); } }
6 名前:名前は開発中のものです。 mailto:sage [2016/12/22(木) 14:59:50.92 ID:rhwSICsF.net] いま、どんな動きしてるの?
7 名前:名前は開発中のものです。 mailto:sage [2016/12/22(木) 15:00:27.60 ID:rhwSICsF.net] あ、反応しないのか。 そのスクリプトはスフィアに貼ってある?
8 名前:名前は開発中のものです。 [2016/12/22(木) 17:05:34.46 ID:zojU7DGn.net] >>7 エラーだらけで、貼る以前に動かない事になっています・・・ public class move : MonoBehaviour (move) void Start() (Start) void Update() (Update) (Transform.Rotate) ()でくくってある部分が赤い線が出てエラーになっています。 後、コントローラーの操作になってしまっていたので if (Input.GetKey(KeyCode.RightArrow))//キーボード に修正しました
9 名前:名前は開発中のものです。 [2016/12/22(木) 17:23:43.57 ID:WyFBB39K.net] C#って、関数名は先頭大文字がマナーなの?マジで?
10 名前:名前は開発中のものです。 mailto:sage [2016/12/22(木) 20:01:43.06 ID:k2kw0/7y.net] >>8 まさか、}の数合ってないんじゃね?
11 名前:名前は開発中のものです。 mailto:sage [2016/12/22(木) 21:33:23.59 ID:BFJhCrrC.net] >>9 変数名の最初が大文字っていうErlangよりはマシじゃん あれだけは慣れない、言語自体は大好きなだけに悲しい #他のObject指向言語から来るとC#のあれはきついけど #慣れればどうと言う事は無いし、コンパイラから怒られるわけでもないのが救い(自分のコードなら小文字から初めても問題ない)
12 名前:名前は開発中のものです。 mailto:sage [2016/12/22(木) 22:04:23.96 ID:+BMlkn8e.net] >>8 見る限り2つのエラーがありそうだね class moveが閉じてない。だから連鎖的にメンバの宣言でもメソッドはクラス内に置けとエラーが出る Transform.Rotateはstaticではない。moveのメンバ変数であるtransformを使ってtransform.Rotate(.,.)と書くべし なおキーボード入力の取得だがInput.GetAxis("Horizontal")で問題ないし、左右まとめて取れるからこっちの方が楽 ゲームパッドからの入力をさせたくなければInputManager側を弄ればいい
13 名前:名前は開発中のものです。 mailto:sage [2016/12/24(土) 03:36:57.21 ID:3ZtDDDzv.net] 画面いっぱいに表示されるように作成したuGUIのWidthとじっきで実行したScreen.Widthの値が異なってしまいます。 XperiaZ5を使用しているのですが、 RectTransformのLeftとRightを0に設定した場合、数値が598 Screen.Widthが1080となっています。 片方はピクセルの数値で、もう片方は違う基準……みたいな感じかと想像しているのですが……よくわからず。 なぜ違う数値が出てきてしまうかご教示いただけませんでしょうか。
14 名前:名前は開発中のものです。 mailto:sage [2016/12/25(日) 01:02:41.50 ID:ITZMqT6/.net] qiita.com/Akematty/items/2fbb61b55132ced4a3be 上記サイトを参考にcsvから2次元配列に変換するスクリプトを作成しました。 ここで読み込んだstringデータをuGUIのテキストに表示させたいのですが、改行の仕方がわからず困っております。 元のCSVに下記のようにデータを入れているのですが……改行させるにはどうすればよいでしょうか スライム,水属性\r\n弱い,
15 名前:名前は開発中のものです。 mailto:sage [2016/12/25(日) 12:49:40.82 ID:fKY3BO/3.net] >>14 csvには決まった文法はないけど、excelに合わせるなら、"で囲むと文字列、って判定させるんやで。 個人的には、今更パーサの自作ってのもナンセンスなので、 jsonutilty(unityのseralizableできる型限定、かつscriptableobjectはデフォでは参照しか出力せず)か サードアセットで適当なjsonパーサ追加して、 一旦jsonテキスト出して読みやすいよう改行だけ追加した方が汎用性高い気がする。 いい感じのyamlパーサがあればそっちでもいい。
16 名前:名前は開発中のものです。 mailto:sage [2016/12/26(月) 09:41:46.29 ID:T8JOgdFL.net] >>14 データ文字列の中にカンマが含まれない前提であれば 分割した個々の文字列に対してstring.Replace(@”\r\n","\r\n")とかしとけはいい ただしこれはかなりテキトーな実装なのでExcelなどが吐いたcsvだとコケるだろう その辺をきっちりやりたければちゃんとしたcsvパーサーを書くか拾って来るかしなければならない 参考までに情報共有を目的とした(Infomationalな)RFC4180の日本語訳を置いておく。標準化された仕様ではないので他のツールがこれに準拠しているとは限らない事に注意 www.kasai.fm/wiki/rfc4180jp
17 名前:名前は開発中のものです。 [2016/12/26(月) 13:06:11.89 ID:oD/audhd.net] >>12 さん >>5 です。 transformに変更と、 Input.GetAxis("Horizontal")に変更すればいいという事でしょうか? まだまだ初心者で、Inputをどう変更すればいいかが分かりません。 どうすればいいのでしょうか・・・? using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class move : MonoBehaviour { void Start() { } void Update() { if (Input.GetAxis(KeyCode.DpadRight))//キーボード { transform.Rotate(Vector3.right * Time.deltaTime); } } }
18 名前:名前は開発中のものです。 mailto:sage [2016/12/26(月) 15:16:44.39 ID:6fyqu+bl.net] Time.deltaTimeは一フレームの更新にかかった時間で、例えば60フレームだと1/60かけた事になる そのプログラムでは一フレームあたりの回転の値がめちゃくちゃ小さすぎて回転してないように見えるのでは? *100とか追加して、一度テストしてみ
19 名前:名前は開発中のものです。 mailto:sage [2016/12/26(月) 16:03:06.10 ID:T8JOgdFL.net] Input.GetAxisはキーボードとジョイスティックの入力によって-1 から 1 の範囲のfloatを返す。入力されていなければ0 どのキーやスティックがどの値に設定されているかはインプットマネージャから変更できる https://docs.unity3d.com/ja/current/Manual/class-InputManager.html だから加減速とか遅延追従を考えないならifなくしてこれでOK transform.Rotate(Vector3.right * Input.GetAxis("Horizontal") * Time.deltaTime * speed); ※speedは回転速度のパラメータなのでクラスメンバとして以下の様に宣言してインスペクタから設定、単位は1秒間の回転角度(deg)、範囲は適宜修正 [SerializeField,Range(-360,360)] float speed=60;
20 名前:名前は開発中のものです。 mailto:sage [2016/12/27(火) 22:59:06.43 ID:fgyv4Or+.net] コンパイルエラーが出てることもわからない初心者以前のゴミに 助言してるふりして気持ちいいか?お前ら
21 名前:名前は開発中のものです。 mailto:sage [2016/12/30(金) 03:32:08.41 ID:GA7tnL/X.net] GUIでCanvasの子オブジェクトの子オブジェクトで画面いっぱいに表示させるにはどうすればよいでしょうか。 Canvas └testB(サイズ固定) └testC とあったとして testCを画面全体に表示させたく思っています。 RecttransformをstretchにしてLeft,Rigth,Top,Bottomをを0にしてもtestBのサイズに合うだけで困ってしまっています。 専用のスクリプトを作成するしか無いのでしょうか。 Componentなどで解決できる方法があったら教えていただきたいです。
22 名前:名前は開発中のものです。 mailto:sage [2016/12/30(金) 11:43:29.83 ID:zhYerI2D.net] >>21 普通でないことを普通でない方法でやろうとすれば難しいのは当たり前なので、普通のやり方をすればいいと思うよ まず挙動に対してヒエラルキー構造が間違ってる ヒエラルキーの親子関係はTransformの親子関係であるため、子にすれば親のTransformに影響されるのが普通 つまりtestBのTransformの影響を受けずに配置したいならtestCをtestBの子にせずにCanvas直下に置けばいい ついでに言うならスクリプトを書くことを避けようとするのも間違ってる 何らかの理由で標準的な動きを無視したり追加する場合、スクリプトを書くのが普通 書く手間を削減するためにアセットを買ったりするという選択肢はあるが、これはスクリプトを読み書きできる奴が手間を減らすためにやる事だ スクリプト書けないからとアセットに頼ってるとアセットの使い方がわからないとか使うためのスクリプトが書けないとかなって早晩挫折する
23 名前:名前は開発中のものです。 mailto:sage [2017/01/05(木) 00:18:11.21 ID:wicwV54V.net] >>21 Unityのヒエラルキーにおける親子関係は、Transformの親子関係なので、testBのTransformに異存したくないtestCをtestBの子にする事が間違い もちろんスクリプトを書けば無理やり合わせる事は可能だが、全く無駄な処理なのでお勧め出来ない
24 名前:名前は開発中のものです。 [2017/01/10(火) 16:23:40.24 ID:27ZmTDPg.net] >>19 さん 返信遅れてもうしわけありません・・・。 そしてありがとうございます! 無事に回転するようになりました。 なのですが、←矢印で右に回転、→矢印で左に回転します。 どうしたら、修正できますでしょうか・・・。 using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class move : MonoBehaviour { [SerializeField, Range(-360, 360)] float speed = 60; void Start() { } void Update() { { transform.Rotate(Vector3.up * Input.GetAxis(
25 名前:名前は開発中のものです。 [2017/01/10(火) 16:25:04.98 ID:27ZmTDPg.net] >>24 です。 書ききれませんでしたのでもう一度書き込みます。 transform.Rotate(Vector3.up * Input.GetAxis("Horizontal") * Time.deltaTime * speed); } } }
26 名前:名前は開発中のものです。 mailto:sage [2017/01/10(火) 17:10:13.75 ID:S4ie+RjD.net] 回転の向き変えたいならベクトルを逆にすればいい
27 名前:名前は開発中のものです。 [2017/01/10(火) 17:38:03.75 ID:27ZmTDPg.net] >>26 さん ベクトルを逆にするにはどうしたらいいのでしょうか・・・? お手数おかけしてすいません。
28 名前:名前は開発中のものです。 mailto:sage [2017/01/10(火) 18:08:04.84 ID:p3ZYhAPC.net] >>27 つVector3.down
29 名前:名前は開発中のものです。 [2017/01/11(水) 21:12:21.34 ID:gDe+TnUt.net] >>28 さん Vector3.downにしましたら、無事に出来ました。 本当にありがとうございます!
30 名前:名前は開発中のものです。 mailto:sage [2017/01/12(木) 21:57:45.02 ID:RRd2GlYc.net] −vector3.upとvector3,down は同じもの この辺がちゃんと判るようになれば だんだん自由に作れるようになるよ transform.upとの違いとか
31 名前:名前は開発中のものです。 mailto:sage [2017/01/12(木) 23:52:18.37 ID:c4Sp82gh.net] 時間に合わせて処理を行いたく、例えば「3.05秒後にaを生成する」ということをしようとして using UnityEngine; using System.Collections; public class Test2 : MonoBehaviour { float timer; public GameObject a; void Update () { timer += Time.deltaTime; if (Mathf.Abs(3.05f - timer) < Mathf.Epsilon) { Instantiate(a, gameObject.transform.position, Quaternion.identity); } } } という風にしたのですが、全く何も起こりません。 時間計測が間違っているのでしょうか?それともfloatの比較はこれではダメなのでしょうか?
32 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:13:45.66 ID:TtkIssVc.net] 普通にif(3.05f<timer)じゃあかんのか?
33 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:23:04.00 ID:TtkIssVc.net] きっかし3.05秒後に処理を行いたいとかなら、deltaを足し続けた後にdeltaが溜まった分だけ処理を行うのが良いぞな、もし。 こんな感じ public float frame=0.01f; public float deltasum=0; void update(){ deltasum+=Time.delta; for(;deltasum<frame;deltasum-=frame){ //ここでフレーム数を判定して処理を行う } } 何れにせよ、updateの中では確実に3.05秒後に処理を行うっちゅーのは難しい話や。
34 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:29:02.44 ID:TtkIssVc.net] ああ、つまり3.05秒後の一回だけ処理を行いたいのか。なら簡単だぞ。 void delta; void update(){ float before=delta; float after=delta+Time.delta; delta+=Time.delta; if(before<3.05f && 3.05f<after) { //ここに3.05秒の処理を書く } } 単にこういうことちゃうの?
35 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:40:24.44 ID:XQNNmksd.net] using UnityEngine; using System.Collections; public class Test2 : MonoBehaviour { public GameObject a; float delta; void update() { float before = delta; float after = delta + Time.deltaTime; delta += Time.deltaTime; if (before < 3.05f && 3.05f < after) { Instantiate(a, gameObject.transform.position, Quaternion.identity); } } } こんな感じでしょうか? ダメっぽいです、ひょっとしたらUnity側で何かしくじってるのかもしれません…色々探してみます
36 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:48:44.36 ID:2cQ+7wxA.net] 3.05秒過ぎた後最初のフレームで1度だけ実行ならコルーチン使えよと void Start() { StartCoroutine(Example()); } IEnumerator Example() { yield return new WaitForSeconds(3.05f); Instantiate(a, gameObject.transform.position, Quaternion.identity); }
37 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:51:30.09 ID:2cQ+7wxA.net] 少なくとも>>33-35 はupdate()は呼ばれることはないから動くはずがない
38 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 00:56:41.01 ID:tDrgUvk9.net] >>31 そのコードだと一度だけはInstantiate()呼ばれてるんじゃないかな 呼ばれたあとにtimer変数をリセットしてないから2度目は呼ばれない timer = 0; Instantiate()の直前か直後に追加してみたらどうだろう
39 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 01:07:00.78 ID:2cQ+7wxA.net] >>38 Mathf.Abs(3.05f - timer) がMathf.Epsilonを下回る事なく3.05f - timerが負の値になるから呼ばれないと思うぞと
40 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 01:18:58.57 ID:tDrgUvk9.net] >>39 なるほど ぐぐったらこんなブログが出てきた 晒して悪いけど参考になる d.hatena.ne.jp/nakamura001/touch/20150117/1421501942
41 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 01:30:41.05 ID:66naZak0.net] そもそもなんでイプシロンを使おうと思ったのかが謎なんだが。
42 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 01:35:46.95 ID:SCkYDwYK.net] >>35 アセットを買えば解決すると思いますよ
43 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 01:47:03.77 ID:tDrgUvk9.net] >>35 deltaが加算され続けるからちゃんとリセットしなきゃ
44 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 02:53:42.04 ID:tDrgUvk9.net] using UnityEngine; using System.Collections; public class Test2 : MonoBehaviour { float timer; public GameObject a; void Update () { timer += Time.deltaTime; if (Mathf.Abs(3.05f - timer) < 1.192093E-07 ) { timer = 0; Instantiate(a, gameObject.transform.position, Quaternion.identity); } } } てどうだ
45 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 03:22:51.37 ID:2cQ+7wxA.net] >>44 どうだと言われてもダメだとしか言えないな timerをリセットするかどうかは3.05秒後に1回実行するか、3.05秒おきに実行を繰り返すかの違いで当面の問題とは関係ない さらに言えばtimer=0;よりはtimer-=3.05f;の方が累積誤差が少ない どちらにしてもMathf.Abs(3.05f - timer) < 1.192093E-07 はtrueになる可能性が殆どないから無意味 >>39 の意味が理解できるまで音読してこいw 普通に書けばMathf.Absもイプシロンも必要ない
46 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 06:43:51.28 ID:tDrgUvk9.net] >>45 おー、なんか反発的な言葉遣いを食らってびっくりしてしまった…ごめんね リセットに関しては俺が質問の意図を勘違いしていたかもしれない 申し訳ない > Mathf.Abs(3.05f - timer) < 1.192093E-07 はtrueになる可能性が殆どないから無意味 そうかな?Update()を使う前提ならこれで意図通りに動くと思ったんだが…。 一度だけの処理なら無駄が多いけど、リセットして繰り返すなら、コルーチン使うよりもこれが最も負荷が低いんじゃないかと思ってしまって >>36 から察するに、キミにとっての"普通"とはコルーチン使おうぜってことでいいんだよね 時間絡みでのコードではコルーチンのほうが相性が良くて簡単に書けることは知ってる でもコルーチンってGC対象のメモリ割り当てが発生するからトレードオフがあるよね確か オレは組み込みのC言語畑で育ったせいか、コルーチンって極力使いたくないんだ 一度だけの処理なら使うことに抵抗ないけど、繰り返しならUpdate()で書くか、Reactive遣いなる などのことを懸念したので、質問者の方針通りに、Update()を使う方針のまま動かそうとした次第 >>31 の質問では、「時間に合わせた処理をしたい。例えば」で挙げた例らしいから、一度だけの場合もあれば、繰り返しの場合もあるんじゃないかと思った次第です_(._.)_
47 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 06:46:05.39 ID:tDrgUvk9.net] >>46 おっと誤字っちゃった × Reactive遣いなる ○ Reactive使いたくなる
48 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 07:06:45.89 ID:tDrgUvk9.net] >>31 の最後でfloatの比較について悩んでるから、これも質問のテーマのひとつだと思ったんだ だから、AbsやEpsironの壁をまるっと乗り越えてかつUpdate()を使う方針のまま、このコードを動かさなければいけないと思った次第
49 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 08:39:28.37 ID:uL2gkYf8.net] invokeじゃあかんの?
50 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 09:12:19.71 ID:2cQ+7wxA.net] >>46 Updateで書こうがコルーチン使おうが関係ないぞ? GC云々と今回の問題は無関係なので、以降コルーチンは使わない前程で話す Time.deltaTimeは60fpsで0.016前後。 Time.deltaTime刻みでしか推移しない値の絶対値が1.192093E-07より小さくなる確率を考えればあり得ないのは一目でわかるだろ 簡単に数値入れて説明するために、あるフレームのUpdate()が呼び出された時点の値を以下の様に仮定する。 timer=3.042f; Time.deltaTime=0.016f; この後timerからTime.deltaTimeが加算され、timerは3.508fとなる。 Mathf.Abs(3.05f-timer)は0.08となり、1.192093E-07より大きいので処理されないままtimerは3.05を跨ぎ越す。 以降Mathf.Abs(3.05f-timer)は増大して行くので永遠に処理されない。 無駄だが敢えてどうしてもMathf.Abs()を使いたいなら判定式は以下のような感じになるだろう Mathf.Abs(3.5f-timer)<Time.deltaTime/2
51 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 09:13:36.44 ID:2cQ+7wxA.net] 繰り返し処理前程ならこれで充分 float timer; void Start(){ //実行時刻を保持 timer=Time.time+3.05f; } void Update(){ if(Time.time>=timer){ //繰り返す処理を書く //次の実行時刻に更新 timer+=3.05f; } }
52 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 09:15:39.07 ID:tDrgUvk9.net] >>50 >>51 色々と気づきが多そうなレスに感謝 でも今こまかく考察する時間の余裕ないからまた後で詳しく読みます
53 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 11:02:12.45 ID:3Kxhm6iD.net] Invokeでいいんじゃね? 繰り返しもRepeat使えば簡単な気がする
54 名前:名前は開発中のものです。 [2017/01/13(金) 12:52:36.95 ID:03VmTGf9.net] 失礼します。初心者なのですが、調べても分からなかったのでお願いします。 見えている角度を変えずにインスペクタの角度だけを0にする方法が知りたいです。 Mayaの回転のフリーズのような感じです。 indie-du.com/entry/2016/05/20/200000 このサイトの最初あたりに、円柱を追加するところがあるのですが、インスペクタでは回転が0と表示されていても この円柱は最初に出した時の角度や大きさから変わっているように思えます。 エンプティーも使われていないようです。もしくは元々入っている円柱とは別で作った円柱なのでしょうか。
55 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 13:36:19.35 ID:2cQ+7wxA.net] Invokeは文字列引数によるメッセージングで遅い上単純なタイプミスで事故るからお勧めしないぞと
56 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 16:31:42.14 ID:3byv90Em.net] ScreenshotをCanvasの範囲でトリミングしたいのだけどどうしたらいいでしょうか? 何か知恵がありましたら教えてください
57 名前:31 mailto:sage [2017/01/13(金) 18:16:20.03 ID:XQNNmksd.net] コルーチンやInvokeでやってみたところ思ったように動きました、Update内で時間計測をするという考え方に囚われて完全に失念していました… またfloatの比較についても大変参考になりました 今回は本当にありがとうございました
58 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 20:51:22.16 ID:RYj55TIY.net] updateって毎フレーム処理だから、使うのを凄い躊躇するんだけど、そんなに気にしなくていいものなんかな? invokeやコルーチンは投げたタイミングだけの処理な気がして、そっちばっかり使ってるんだけど。
59 名前:名前は開発中のものです。 mailto:sage [2017/01/13(金) 21:51:32.65 ID:uVWQl5m1.net] リアルタイムゲーなら、メインで1つアップデートを使ってメインループとしてそこから、たのサブルーチンをコールして作ってる、昔ながらの製法。
60 名前:名前は開発中のものです。 [2017/01/14(土) 02:47:18.39 ID:s8obdTow.net] >>58 だから昔はCかアセンブリしか使っちゃダメだった
61 名前:名前は開発中のものです。 mailto:sage [2017/01/14(土) 05:14:54.51 ID:sW3O5xNu.net] そもそもメモリが一桁MBのシステムでLLVMみたいのを住まわせることが不可能だったからだろ。 適当言うなや
62 名前:名前は開発中のものです。 mailto:sage [2017/01/14(土) 08:38:19.95 ID:yhQ2Zqz9.net] なるほど。CPUを取るか、メモリを取るかが大きな違いなのか。 どっちがいいか、悩み所。 電池消費量の高いCPUよりメモリをとった方がいいんかな?
63 名前:名前は開発中のものです。 mailto:sage [2017/01/14(土) 08:51:07.53 ID:FQNy+lA5.net] メモリを取るといっても、割り当てたまま長期的に存在するオブジェクトか、一瞬で消えてGCの原因になってしまうオブジェクトかで違うけどね C/C++では、動的に割り当てたメモリは破棄までプログラマの責任だったから、面倒くさくてバグの温床になったりもしたけど、分かりやすかった 短期的なオブジェクトはすべてスタックに積むように心掛けてたな
64 名前:名前は開発中のものです。 mailto:sage [2017/01/15(日) 00:53:15.77 ID:mJc81nur.net] リンカースクリプト書いてオーバーレイを駆使したりとかもしたなー
65 名前:名前は開発中のものです。 [2017/01/18(水) 05:24:36.07 ID:eAdHdPba.net] 放物線を用いて 野球の外野フライのような動きを実現したいのですが、 オススメのアセットとかありますか?
66 名前:名前は開発中のものです。 mailto:sage [2017/01/18(水) 05:29:48.53 ID:BsoLChRb.net] 物理エンジン動かして重力効かせて、ボールの rigidbody にAddForce() すれば良いのではなかろうか
67 名前:名前は開発中のものです。 mailto:sage [2017/01/18(水) 08:44:41.35 ID:BitHDnth.net] 単純な放物線ならxz平面を移動しながら時間(もしくは距離)に応じて二次関数使ってyを求めるだけでいいんじゃね?
68 名前:名前は開発中のものです。 [2017/01/20(金) 00:32:56.25 ID:C1pZjcKQ.net] 平べったい四角形のオブジェクトにテレビに映し出すように映像(mp4)を映し出したいです。 どうすればいいのでしょうか? MovieTextureを使用するといいというのは分かるのですが、いまいちよく分かりません・・・
69 名前:名前は開発中のものです。 mailto:sage [2017/01/20(金) 03:10:02.37 ID:mHWvQiCE.net] そこまで分かってるなら、あとはググるだけじゃね? 何かやってそれが動かないならまだ答えようあるけどそれじゃあどう答えていいやらさっぱり。
70 名前:名前は開発中のものです。 mailto:sage [2017/01/21(土) 06:32:20.66 ID:KbA1zUqg.net] >>68 アセットを買えば解決するんじゃないでしょうか?
71 名前:名前は開発中のものです。 mailto:sage [2017/01/21(土) 06:38:16.59 ID:Xpwpej+A.net] 無料アセットでは解決しませんか?
72 名前:名前は開発中のものです。 mailto:sage [2017/01/22(日) 02:51:35.79 ID:lQCYQ6vu.net] >>66 ルールありスポーツだと 制御が酷しそう 予想がいの動きするし 野球程度なら 運動方程式で自分でやったほうがいいね
73 名前:名前は開発中のものです。 mailto:sage [2017/01/22(日) 17:58:34.47 ID:qNOVy0Ou.net] Unity5.5を使用して勉強している初心者です。 switch platformで「PC」から「Android」に変更をしました。 そしたら、画像(PNG)がぼやけて表示されるようになってしまいました。 どのような原因が考えられるでしょうか?ご教示お願い致します。 m(_ _)m
74 名前:名前は開発中のものです。 mailto:sage [2017/01/22(日) 19:35:21.56 ID:ecN6vSbL.net] 画像インスペクターのドロイド君アイコンクリックしてAndroid用のインポート設定変えてみたら?
75 名前:名前は開発中のものです。 mailto:sage [2017/01/24(火) 22:16:15.78 ID:Ayfa/85o.net] >>74 ありがとうございます!解決できました^^ノ
76 名前:名前は開発中のものです。 [2017/02/01(水) 09:53:23.60 ID:cq6X5lH4.net] cubeを細く伸ばしてディスプレイのような形にしMovieTextureを通して、mp4の映像を流したいと考えています。 cubeの名前をMAP、MovieTextureの名前をMapTextureとして、作っています。 そして、映像を流す為には、「映像を流す」という指令のC#scriptが必要との事ですので、それを付けてみたのですが、どうやら適切にかけておらず、動きません。 どこが駄目なのかご指導してもらえますと助かります using UnityEngine; using System.Collections; public class Map : MonoBehaviour { public MovieTexture MapTexture; // Use this for initialization void Start () { // this line of code will make the Movie Texture begin playin ((MovieTexture)GetComponent<Renderer>().material.MapTexture).Play(); } // Update is called once per frame void Update () { } }
77 名前:名前は開発中のものです。 mailto:sage [2017/02/01(水) 13:28:33.19 ID:lebsDpi7.net] >>76 ((MovieTexture)GetComponent<Renderer>().material.MapTexture).Play(); 間違ってるのはここ。UnityEngine.MaterialにMapTextureなんて変数はない マテリアルのテクスチャにムービーテクスチャをセットしてあるなら以下を呼ぶだけでいい。 ((MovieTexture)GetComponent<Renderer>().material.mainTexture).Play(); MapTextureにセットしたテクスチャをつかいたいなら GetComponent<Renderer>().material.mainTexture=MapTexture; MapTexture.Play(); マテリアルにムービーテクスチャがセットされているかわからないなら MapTexture=GetComponent<Renderer>().material.mainTexture as MovieTexture; if(MapTexture!=null){ MapTexture.Play(); }
78 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 11:07:33.80 ID:673wvmAp.net] 標準のパーティクルシステムにDoFエフェクトをかけたいのですが 一つのオブジェクトとして全体にかかります 二個用意して疑似的にすれば見た目はクリアできますが これを1オブジェクトでやる方法ないですか?
79 名前:名前は開発中のものです。 [2017/02/02(木) 14:36:33.70 ID:QbjwoyYB.net] 質問なんですが、Unityでゲームを作っているんですが キャラクターアニメーションを動かしたいのですが 中々上手くアニメーションができません。またドット絵を使用しているので グリット線のような物がないため難しいです。 何かいい方法はありませんか? アセット推進の方はそのアセットを紹介してくれるとありがたいです
80 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 14:44:24.41 ID:CGkCsCHt.net] 連番png使ったパラパラアニメーション? それともボーン入れたパペットアニメーション? 連番アニメーションで上手く行かないのはドット打つ技量での問題なのでUnityよりも映像関連の技術を学んだ方が良さげ アニメの原画関連の指南書読んだ方が良いと思う
81 名前:名前は開発中のものです。 [2017/02/02(木) 17:08:16.47 ID:QbjwoyYB.net] 連番png使ったパラパラアニメーションですね
82 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 17:22:11.92 ID:y6EaGkR2.net] 座標の最小単位を1として、=1ドットで構築すれば特に気にならず作れると思うが…
83 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 17:51:16.61 ID:H6m8qbA2.net] なにがどう上手くアニメーションできないのかがわからんので何とも言えないなあ。 裾野が広がってるからだろうしこういう質問にも気長に対応していくしかないか
84 名前:名前は開発中のものです。 [2017/02/02(木) 18:26:27.18 ID:QbjwoyYB.net] >>82 試しにやってみます >>83 すみません…自分初心者で説明不足な点があるかもしれません もう一回である程度操作してから質問します…
85 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 18:29:56.23 ID:H6m8qbA2.net] >>84 質問すること自体は悪くないのでまた来ておくれ このスレの住民もエスパーじゃないので説明によっては上手く答えられないこともままあるので歩み寄りつつやって行こう
86 名前:名前は開発中のものです。 [2017/02/02(木) 19:08:45.21 ID:P3lPHMFM.net] >>77 さん ありがとうございます! 解決しました。
87 名前:名前は開発中のものです。 [2017/02/02(木) 19:12:32.26 ID:P3lPHMFM.net] 質問です 画面内に表示されている3Dtextやcubeなどをキーボードの(A)ボタンを押したら消えるようにしたいんですが、 どうすればいいでしょうか? void Update(){ if(Input.GetKey(KeyCode.Space)) { Destroy(movieTexture): } } こんな感じで書いてはみたのですが、まるで消えません・・・。
88 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 19:13:34.02 ID:iPL3lLjC.net] Spaceを押して消える?
89 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 19:26:57.75 ID:H6m8qbA2.net] >>87 他人のスクリプトコピペだけじゃ成長しないぞ せめて公式のリファレンスくらいは目を通して、どの部分が何をしてるのかくらいは把握しよう
90 名前:名前は開発中のものです。 [2017/02/02(木) 20:03:17.78 ID:36Fm42wG.net] 質問です。お願いします。 アセットストアから歩行モーションのついたアセットをインポートして 歩行のプレビューも観れるのですがこれをシーンで実際に動かすにはどうすればいいでしょうか? 単にその場で足踏みするような歩行が出来ればいいです。他の複雑な動きは一切いりません。
91 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 20:07:11.83 ID:H6m8qbA2.net] hiyotama.hatenablog.com/entry/2015/06/27/090000
92 名前:名前は開発中のものです。 [2017/02/02(木) 20:12:00.67 ID:P3lPHMFM.net] >>88 >>89 さん 自分で別に書いたものをコピペして張り付けるときにAボタンと間違えました・・・
93 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 20:52:52.63 ID:36Fm42wG.net] >>91 どんな最小のアニメーションでも スクリプトを書かないといけないんでしょうか? 気になって聞いてみました。必要なら書きます。
94 名前:名前は開発中のものです。 mailto:sage [2017/02/02(木) 21:00:23.87 ID:H6m8qbA2.net] >>93 いや、1モーションの再生だけなら特に必要ない シーン上に配置したモデルにAnimatorController付けてデフォルトのステートに足踏みモーション入れれば終わり
95 名前:名前は開発中のものです。 [2017/02/02(木) 21:22:01.64 ID:36Fm42wG.net] >>94 色々やってたら動きました!ありがとうございます。 あとついでにもう一つだけ質問いいですかね? シーンのレンダリング結果(動き)を動画として出力したり 連続画像(背景を透過できるpng等)での出力という機能はUnityにあるのでしょうか?
96 名前:95 mailto:sage [2017/02/03(金) 00:40:56.90 ID:g/HCWzE2.net] 色々とスクリプトで出来そうなのでそれでやります。
97 名前:名前は開発中のものです。 [2017/02/03(金) 00:58:32.38 ID:g/HCWzE2.net] もう一つだけ質問おねがいします。 動かすとオブジェクトのフチに白いドットがちらちらと少しついてしまいます。 どうもRendering Pathやアンチエイリアスの項目を弄ると出現したりしなかったりするようです。 アンチエイリアスが効くと出るみたいです。アンチエイリアスが効いてもこの点々でちらつかないようにできないでしょうか?
98 名前:名前は開発中のものです。 mailto:sage [2017/02/03(金) 01:19:11.78 ID:8w1R+UoH.net] マテリアルのalpha is transparencyはオンになってる?(Spriteなら、Defaultに戻してオンにして) なってて白いのがでるならすぐにはわからんかな
99 名前:名前は開発中のものです。 mailto:sage [2017/02/03(金) 01:23:55.98 ID:8w1R+UoH.net] マテリアルじゃないか、テクスチャだな 寝かけながら書いたから危うい 要は透明部分が有効になってないと白で表示されたりするのでそれじゃないかねって話
100 名前:名前は開発中のものです。 mailto:sage [2017/02/03(金) 01:24:58.64 ID:g/HCWzE2.net] >>98 テクスチャのところにその項目があったのですがこれでいいですか? 一応全部ONにしてみたんですがやっぱり点々が出てチラチラしてしまいますね…