【ゲームエンジン】Unity初心者質問スレBuild1
レス数が1000を超えています。これ以上書き込みはできません。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。 プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他
■注意事項
「アセットを買えば」「チュートリアルやれ」等禁止、初心者の質問疑問に初心者が答えるスレ、ググれじゃなく何のキーワードでググったらいいかを書く
次スレは>>950以降にできるだけ早く(できれば回答者が回答した後にでも余裕を持って)建てて下さい。
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
http://unity3d.com/jp/unity/faq
・MSDN
http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
関連スレ
【3Dゲームエンジン】Unity質問スレッド35
https://mevius.5ch.net/test/read.cgi/gamedev/1523771570/ ボーンの設定を確認する画面に行く為のコンフィグってボタン押すと固まるんですが、解決方法ありますか? Unityのバージョンによって挙動変わるから色々試すといいかと >>5
ありがとうございます。
ずっと待っていたんですが、読み込みが遅いだけで一応画面は出てきました…が、5分ほど待ちましたしその後の画面もすごく重くまともに操作できません。
いろいろなバージョン試してみます。 【情報共有】Unityのバージョンによるマップエディタ(TilePalette)について
2017.3.1f1:表示される
2017.4.1f1:表示される
2017.4.2f2:表示されない
2018.1.0f2:表示されない
2018.2.0b3:表示される(メニュー位置が Window > 2D > Tile Paletteに変更されています)
以上より、現状 Tile Palette を最近のバージョンの Unity でお使いいただくには、2017.3.x,、2017.4.1、また、ベータ版となりますが、2018.2.xのいずれかをご利用していただく必要がございます。
上記スプライトが表示されないバージョンで開いたプロジェクトを例えば2017.4.2で作成し2DGameKitを展開してスプライトが表示されないことを確認したあと、同じプロジェクトを2017.4.1や2018.2.0b3で開くと再度スプライトが表示されるようになりました
あるプロジェクトで Tile Palette のスプライトが表示されなくなっても、それで Tile Palette のアセットが壊れてしまうということではないようです。 すみません、rigidbody.addforceについてなんですが、混乱してます。
Rigidbody rd = GetComponent<Rigidbody>();
Void Start(){
//一瞬(Time.deltaTime分?)だけ力が加わるのですか?
rd.AddForce(transform.forward);
//試したら1秒間力を加えた後の状態になったと感じたのですがあってますか?
rd.AddForce(transform.forward,ForceMode.Impulse);
}
Void FixedUpdate(){
//スクリプトリファレンスでは下記のように書いてあったのですが、これは次のアップデートのタイミングまで力を加え続けてくれるんでしょうか。
rd.AddForce(transform.forward);
} >>8
スタート関数のは最初の一回だけ行います
あっぷでーと関数は、毎回力が加わります unityで崩壊学園のような2Dアクションゲームを作りたいんですが、参考になるサイトや書籍はありませんか?
左右の移動だけじゃなくて、上下にも移動ができるようなタイプのゲームです。 質問させてください。
この2Dシューティングのチュートリアルなんですが
https://unity3d.com/jp/learn/tutorials/projects/2d-shooting-game/adding-enemy-hp-shot-power-and-animations?playlist=46524
>図11.14:
>これを交互に60フレームまで「オフ、オン、オフ、オン...」というように
>キーを打ち込んでください。
ここを実行したのですが、プレイヤーが無敵中に点滅してくれません。
無敵中ずっと消えたまま、です。
自分が見よう見まねで設定したのはこれですが、
https://dl1.getuploader.com/g/6%7CSR1gou/907/000.jpg
「オフ、オン、オフ、オン...」というのはどこのことでしょうか? >>9
ありがとうございます。
てことは、例えば重力なんかの場合、加速度9.8m/s^2だったら、update()に書く場合、addforce(9.8 * Time.deltatime)でいいんでしょうか。 >>11
まずは、オンオフ回数を目一杯減らして、動作確認してください。
見当違いかもしれませんが、処理が間に合わないと点滅しないかも。1:00の間に2回ぐらい、まで激減らす。
それでも表示されなければ、設定に問題あり。
点滅するなら、pcの能力不足。 >>11
俺はオフの次のキーでオンになってないんじな以下と思った。
spritererendereの2番目のひし形クリックした時、spritererendere横の0は1になってる? >>10
「unity スマホ 2d」でgglと出てくる上3つくらいのWeb見るといいのかなと思いましたが、ここで質問している事は既に見ている上での質問だったでしょうか?
>>12
重力の場合、Rigidbodyだと重力が適用されているので、例えば何かオブジェクトを作成してRidgidbodyをアタッチして、プレイすると自然落下しますよね、もし12のコードにすると、毎回9.8を掛ける事になるので、とてつもない速さで落下してしまいます。
まぁやってみると解ると思うけど。 >>11
さくっと斜め読みなのであってるかどうかわかりませんが
ttps://imgur.com/a/jRDSWna
こんな感じでEnableのチェックをオン、オフするのかなぁと
自分はいつもアルファで点滅してたので、いい勉強になりました >>15
うそ教えちゃいけないよ。
>>12
FixedUpdate(){
AddForce(Vector3.up * -9.8f);
}
で、rigidbody.mass=1ならvelocityが1秒後に9.8になる。Time.deltaTimeをかける必要はない。どんどん加速はするけど、それは実際の重力と同じ加速。
重力をやりたいなら、
FixedUpdateに
AddForce(Vector3.up * -9.8f.ForceMode.Acceleration);
て書いとけば、massに左右されず、rigidbodyのUseGravityと同じ結果になる。
引力はmassが馬鹿でかいし重力定数はくそ小さい。rigidbody.massは使わずに、
M1自分、相手m2として、fixedUpdate内で
F = G*m1*m2 / r^2
を相手m2 = 1として求めて、
AddForce(自分方向の単位ベクトル * F,ForceMode.Acceleration);
てしてやるといい。m2=1と言うのは、引力の公式から、自分が相手に与える加速度のみを取り出したと思えばいい。ForceMode.Accelerationと相性がいい。
Rigitbody.massを1のままにしとけば
AddForce(自分方向の単位ベクトル * F);
でも結果は一緒。もちろんFはm2=1で求める。 >>17
あ、rigidbodyの重力は切っておくんだよ。 >>13
レスありがとうございます
数を減らしても透明のままですので
PCの能力不足ではないようです。
オンオフの設定を理解できてないのでそこが問題かと推測しています。
>>14
レスありがとうございます。
>spritererendere横の0は1になってる?
いえ、どこのひし形に合わせても0のままです。
もしかして、ここの値がオンオフの切り替えですか?
1が描画、0が非描画、みたいな判定でしょうか?
>>16
レスありがとうございます。
spritererendere横のチェックの有無がオンオフ切り替えですか?
しかし、自分のはチェックできる場所が消えてしまっています。
とりあえず、
>>14さんのご指摘のspritererendere横の数字の変更、
>>16さんのご指摘のspritererendere横のチェックの有無、
をそれぞれ触って確認してみます。 >>14さんのご指摘のspritererendere横の数字が0だったのを1にしてみました。
すると、プレイヤーが点滅状態にできました!
しかし求めている非描画、描画とを交互にするイメージとは違い、
非描画1秒ごとに一度描画される感じです。
タイミングを表現すると、ンーーパッ、ンーーパッ、て感じで点滅しています。
(自分がやりたい点滅タイミングは、ンパンパです)
多分、ひし形をカットして1秒サイクルを0.10ほどに短く作れば、いけそうですが
チュートリアルに倣って、完成させたいので
この1秒の中でンパンパになる様に設定したいのですが、、どうすればいいんでしょうか
ちなみに、今回spritererendere横の0を1にしたら
なぜ1秒後に描画される様になったのか、理由がわかりません。
この数字はなにを表しているのでしょうか?
https://dl1.getuploader.com/g/zipcodezipcode/169/000.jpg >>16
>ttps://imgur.com/a/jRDSWna
>こんな感じでEnableのチェックをオン、オフするのかなぁと
すみません、自分のには>>16さんのスクショにある様なEnableのチェックがありません。
https://dl1.getuploader.com/g/zipcodezipcode/169/000.jpg
最初はあった気がするのですが、触ってるうちに無くなった気がします。
非表示になってしまっているのか、なんなのか、どうやったらチェックが現れるか
ご存知でしょうか? >>15
レス有難うございます。
webの検索だけではなくunity関連の書籍も数冊購入済みです。
ですが、Unityの2Dアクションのそのほとんどが、ロックマンのような真横から見た視点のものばかりなんです。 >>16
プレイヤーオブジェクトを選択してからアニメーション窓を開いたら
チェック項目を表示したspritererendereを確認できる様になりました。
さっきは作ったInvincibleアニメーションを選択してから
アニメーション窓を開いた状態でした。
https://dl1.getuploader.com/g/zipcodezipcode/170/000.jpg
ただ、あなたのttps://imgur.com/a/jRDSWnaの画像にある様に、
途中でチェックを入れたりはずしたりの設定方法がわかりません。
ひとつずつ、キーフレームを選択して、チェックを触るのかなと思ったのですが
チェックを入れるとずっとチェックが入ったままになってしまいます。
チェックをキーフレームごとに設定できません、、、
どうやって、フレームごとのキーのチェックをはずしたりつけたりしたのでしょうか? >>17
フォローありがとうございます
なんせ素人が回答するスレなもので、申し訳ないです
>>21
チュートの画像と比べると、
sprite Renderer.Enabled の前に「オブジェクト名:」が無いですね
チュートはあるので、そこらへんの問題でしょうか?
再度、追加からしてみてはどうでしょうか >>24
解決できたようで何よりです
録画ボタン(赤まる)を押して、各キーフレームのところで、チェック、録画オフ、
次のフレーム、録画押す、チェック外す、録画オフ、次のキーフレーム行く
の繰り返し
まぁ一個つくって、コピペでいけるので
コピペしたあとは、録画ボタンは関係なく、キーフレームに位置を設定して値を直接いじれば変更できます
これは何度かやり直して習得しないとなかなか理解しにくいかと思います。
自分もアニメ関係は4,5個シーンを作ってどうにか理解できましたので
(まだ完全には理解していないけど)
なので、その部分だけいじる、動かす、を繰り返すと解るようになるかなと
習うより慣れろ系です >>25
できました!
https://dl1.getuploader.com/g/zipcodezipcode/171/uni01.gif
が、表示しない場合と表示する場合の
やり方自体を理解していないので
気分が晴れません、、
新しく作ったキーフレームが「表示する状態のキーフレーム」だったので
とりあえずそれをコピーして、
透明ばかりのキーフレームの偶数回目のキーフレームを削除して
そこにペーストしていった感じです。
現状先に進めても、
透明のキーフレーム、非透明のキーフレームを
意識して自分が作ることは不可能ですね。
んーーーー。。。。 >>26
>録画ボタン(赤まる)を押して、各キーフレームのところで、チェック、録画オフ、
>次のフレーム、録画押す、チェック外す、録画オフ、次のキーフレーム行く
の繰り返し
なんとなく、わかってきました。
慣れていきます、回答してくださり本当に
ありがとうございます! >>23
崩壊学園の動画見て見ました
いわゆる奥行きのある横スクなのかな?
まぁUnityでやるなら普通に2Dプロジェクトに3Dの床配置して、カメラを斜め視点にすれば
実装できると思いますけど、あとは奥に行ったときにキャラのスケール調整するくらいでしょうかねぇ キーフレーム、複数選択してチェック、できなかったかな?
ctrlかoptionキーおしながら選択すればできたような。 >>30
アセットを購入すればできるようになると思いますよ >>31
こっちのスレでは禁止ワードなので、ちゃんと>>1読んでからレスしてください >>32
アセットを買えば禁止もできるようになると思いますよ >>33
スレローカルルールに違反なので嵐通報させてもらいますね >>29
そうです!奥行きのある横スクです!
カメラを斜め視点にするというのも一度試してみましたが
変に奥行きがついてしまって微妙な感じでした。
うーん。物理エンジンを使わないで直接プログラムを組むしかないのかな。 Unityは最近始めたばかりなのですがオブジェクトをオブジェクトにぶつけると
痙攣したようにガクガクとしてしまいます。
ちゃんとしっかり止まるようには出来ないでしょうか
interpolateやCollisionDetectionを変えてみましたが無駄で
Fixed.timestepというのを小さくした所しっかり止まるようにはなったのですが
どこのサイトでもゲームが重くなると注意書きがあって誰かにプレイしてもらう時に
止まったりしないか心配です >>35
いわゆる2.5D。2Dじゃなく3D。カメラのprojectionはperspective。2Dスプライトに3Dのrigidbodyとコライダーつけるのが手っ取り早い。奥行きはカメラの位置や向きや視野角を調整。どんな本を見てるのか分からないけど、スクロールは本に載ってるやつでできるかも知れない。 >>36
どういうぶつけ方をしているのかわからないけど、physicMaterialのbouncinessを0にして各々のコライダーにつけとけば、いいかも。 >>38
ぶつけかたというのはスクリプトでいいでしょうか
public float speed = 3f;
float moveX = 0f;
float moveY = 0f;
Rigidbody2D rb;
void Start(){
rb = GetComponent<Rigidbody2D> ();
}
void FixedUpdate () {
moveX = Input.GetAxis ("Horizontal") * speed;
moveY = Input.GetAxis ("Vertical") * speed;
rb.velocity = new Vector2(moveX, moveY);
} >>35
ttps://imgur.com/a/x8i6Yjs
ちょっと雑だけどこんな感じかな
スケールいじらなくても奥に行けば小さくなるので簡単にいけそうですね
上下で奥、手前、左右の動きをプログラムで組めばいいかと。
カメラを斜めにしているのと同じ角度にオブジェクトもしています
これは3Dオブジェクトを配置してますが2Dプロジェクトなのでコライダ関係は2Dを使うといいかと思います >>36
>>39
ぶつかった時の処理がないような気がするのだけど、ぶっかった時にスピードをゼロにするとかは?
>>40
オブジェクトはスプライトでも当然問題ないです キー入力みたいに継続した入力で動かすなら、velocity使わずにaddforceが無難だと思う。 >>41
ぶつかったときの処理は何も無いですね…
試してみたら上手く止まりました!
また困ったら質問します >>39
これだとぶつかってなおキー押していると、あらぬ方向にぶっ飛んでいくよね。進めない方向にF=mv/tの力加えるんだから、ガグガクして止まらないどころじゃない。
そして、公式のスクリプトリファリンスにあるように、
ほとんどの場合、非現実的な挙動になるため速度を直接修正するべきではありません。
オブジェクトの速度を物理ステップごとに設定しないでください。これは非現実的な物理シミュレーションに繋がります。
速度を変更する上での典型例は、ファーストパーソン・シューティングでのジャンプ時にあります。即座に速度を変更したいためです。
だから。
どんなサンプルを見たか知らないけど、運が悪かったですね。 >>45
複数の書き込み確認です
なお、規制されるとこの板全部書き込み出来なくなるのでよろしくです
取り合えず、複数の通報してます。
来週もあるようなら他からも通報させてもらいます
あちらに書き込みしたければ、これで止めてくださいね Wave型ってなんですか? 波型?
検索してもUnity上での組み立て方法ばかりなので
その言い回しはUnity独特のものですよね?
Wave型というものはどういう型なのか、教えてください。 また、プレハブにあるファイルの複製方法ってありますか?
左クリックの項目にコピーが見当たらないので。
ファイル開いて直接複製しても大丈夫なんでしょうか エクスプローラーでコピーしてちょっとすればMetaファイルも自動で作られる。
でも、ファイルだから名前かぶるとダメだぞ。
楽なのはヒエラルキーに一度いれて、そこから何回もアセットにドラッグアンドドロップするのが良いかな。
勝手に名前の後ろに連番降られるけど。 ctrl+dだよ
削除っぽいけど複製だよ
ほんとだよ
だまされたと思ってやってみなよ プレハブにあるコピーできないファイルを
ヒエラルキーにドラッグすると
「Unable to instantiate prefab. Prefab may be broken.」
とエラーが出ました。
このせいだった様です。
、、というか、いきなり、壊れる、とかこんなことあるんですか??
フレハブ内のファイルが壊れるケースを教えてください。
修復は、そのプレハブファイルを最初から作るしかないですよね?ソースとかないですから。
Unityではそういうリスクがあるんですね。。 コピー方法に対してレスくださった皆さま、ありがとうございます
いろいろ試してはいたんですが、壊れていたのでコピーできなかったようです、、、 ちなみに、エラー全文はこれです。
壊れている、とありますが、具体的な状況わかりますか?
Unable to instantiate prefab. Prefab may be broken.
UnityEditorInternal.InternalEditorUtility:HierarchyWindowDrag(HierarchyProperty, Boolean, HierarchyDropMode)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) とりあえず、壊れたプレハブファイルは
新しく作り直し、解決しました。 >>58
お疲れちゃん、プレファブに使ってたファイルやら子プレファブやを削除してたら壊れてるって出るけど、エラーメッセージまでは覚えてないや。
wave型はどばっと来てそれをやっつけるタイプだよ。第1波とか言うとピンとくるかな。 fortniteはunreal enginで作ってるんでしょ >>61
アセットを買えば簡単ですよ
初心者はまずアセットを検索する技術から磨きましょう! アセットストアも公式のスクリプトリファリンスも検索遅いですよね。リファレンスページの検索よりgoogleの検索使ってリファリンスに飛んだ方が数倍早いのなんとかならないの。 お目汚し失礼致します。
つい最近Unityに手を出した者なのですが、GameObjectとPrefabの扱いでいくつか質問があります。
1.オブジェクトをプレハブ化した後、シーン上で元のオブジェクトを削除(単純に見えないようにする、という意味です)するにはどうすればよいのか?
2.例えばキャラクターの装備を変更したい時にはプレハブ化したオブジェクトをインスタンスで呼び出せば良いらしいが、その元オブジェクトはどこに置いておけばよいのか?
初心者丸出しの質問ですが、お教え頂ければ幸いです。よろしくお願い致します。 >>65
アセットストアに装備関係のアセットがありますよ >>65
プレハブ化できている(フォルダ内に移した)なら元のゲームオブジェクトは削除しても問題ない
なにか訳あって残したいんなら左上のチェックボックス外して非活性にするかカラーを透明にする >>67 オブジェクトの読み込みはスクリプトでの制御が良さそうですね、ありがとうございます。
>>68 なるほど、プレハブ化すれば元オブジェクトは要らないのですね…なんか勝手に「プレハブ化元は消せない」と思い込んでいました。ありがとうございます。 すみません、変な質問で申し訳ないのですが
Unityには様々なコンポーネントがありますよね。
公式にて、ゲームオブジェクトが空鍋なら、
コンポーネントはそこに入れる具材だと書いてました。
で、すべてのゲームオブジェクトの、どんなコンポーネントでも、
スクリプト(ソースコード)上で取得することができる、という
私の認識は間違って居ませんでしょうか? 汝らよ、空鍋に入れる具材はキムチと知りなさい。
鍋のキムチを取得したければアセットを買えばよい。
初心者は、我が見守るこのスレで、誉れと思って、そのことを深く記憶にとどめておきなさい。 Hierarchyのラベルの大きさを変えるにはどうしたらいいですか?
リストの行の高さを変えるのが目的です。 >>75
色々と調べましたが、直接ヒエラルキーウィンドを変更するのはないですね
別のエディトウィンドで新規にヒエラルキーを作成してやるなら出来るようです
ただし、かなり難しいので根気がいると思います
別のヒエラルキー作成
ttp://anchan828.hatenablog.jp/entry/2013/12/24/210139
エディタ画面のフォントスタイル変更
ttp://baba-s.hatenablog.com/entry/2015/05/10/114527 一応、サンプルのを2行表示してみたところ、行をかなり開けてます
ttps://i.gyazo.com/f3d5ba142b9547aabe8cb7a4a0589af1.png 直接は無理なんですね。
上記のサイトを参考にして自作してみます。 C#を使用して2Dゲーム制作をしている初心者です
左右の方向キーを使い、特定の位置五ヶ所にキャラクターを移動させるにはどのようにしたらいいのでしょうか?
・移動箇所
☆キャラクター
・ ・ ☆ ・ ・ >>79
左右キーが押されたらキャラクタの座標を変更すればいい
各位置を0〜4の番号を割り振っておいて、今キャラクタが何番にいるか記憶しておく
3番にいるときに右キーが押されれば4番に移動すればいいので4番の座標に動かす
4番にいるときに右キーを押されたら0に行くのか4のままなのかは仕様次第 >>80
ありがとうございます
使うのはifでいいのでしょうか? すごく単純なサンプルなんだけど役に立てば…
ttps://i.gyazo.com/ef87d68ef77ff58c18204f0ec9262445.png
SSのようにあらかじめ決められた場所に配置しておきます、でインスペクタでオブジェクトを指定し、Start関数で一旦全部非表示にします。
ttps://i.gyazo.com/cfc38424c56b616625b93c313f8aebcc.png
あとはキーが入力されたら、その位置のオブジェクトを表示する
ttps://imgur.com/a/7O3lHgW >>81
たぶん自覚してるんだろうけどスタートラインにも立ててないような初心者なんで82のサンプルでも見て何がどうなってるか理解するとこから始めよう
このサンプルが実現したいものを再現してるとは思わんが、これくらいは問題なく理解できないとゲーム作るなんて夢のまた夢 >>82
私のような初心者にサンプルまでつけていただいて…大変恐縮です
ありがとうございます
サンプルを参考に頑張ってみます っていうかキャラクタの移動、って質問者が言ってるのにactiveの切り替えでサンプル作るってすごい発想だな
移動を歩いてるよう見せたいとかしたくなったら破綻すんじゃん 瞬間移動ならいいんじゃね。
直接座標いじるのもいいが、決まった座標かつ少数の移動先なら有効っちゃ有効。
慣れるまでならTranaformいじるよりこっちの方が混乱しないだろ、多分。 漠然と質問なんだから良いんだよ。
キー入力の時、押しっぱとかの対応を書こうとしたけど、要らぬお世話と判断して辞めた。
今はこれぐらいで充分だとね。 >>86-87
何故「弟子 ◆rZPPjYuxmQ」を外して返信するんだ?
何か不都合でもあるのか
分かりづらいのだからコテハン付けたまま同じ端末で書き込んでくれないか >>88
禁止事項に違反してますね
荒らしとして通報させて貰います
この板全体に書き込みできなくなりますよ >>89
>■注意事項
>「アセットを買えば」「チュートリアルやれ」等禁止、初心者の質問疑問に初心者が答えるスレ、ググれじゃなく何のキーワードでググったらいいかを書く
どこのどの部分に違反しているの?
ちょっと見てる人全員に分かるように詳しく説明してくれない? EditorフォルダにBuildPipeline.BuildAssetBundlesのscriptをいれて
プレハブを選択してメニューからBuildAssetBundlesをしてアセットを作りました
UnityStudioから覗くとScene HierarchyはGameObjectだらけ(1つめの画像)
Asset ListのTexture2Dを選択しても何も表示されません。(2つめの画像)
何が問題なんでしょうか。
https://i.imgur.com/nuqT3uz.jpg
https://i.imgur.com/OJ145K6.jpg >>84
めげずに頑張ってください、私で分かる事であればお答えしますので
一応、スムーズにムーブするサンプルです(画像だけ)
ソース欲しいならどっかにうpしますね
ttps://imgur.com/a/xmOYSqk
>>91
ここは素人だらけなので、すごく難しい質問ぽいですね、さくっとアセットバンドルのところを斜め読みしたのですが
ビルドしたのを取り込んで使う場合ってAssetBundle.LoadAsset とかでロードするんでは?
こちらのスレだと解決には厳しいかもしれません >>92
研究したいのでソース見たいです
よろしくお願いします スムーズに動かしたいならTransrateかAddforce使う。
物理挙動も取り入れるならAddforceで物理はどうしても取り入れたくないならTransrateと使い分ける。
サンプル丸コピじゃ成長しないし、少なくとも俺の解説よりは分かると思うから、少しはググるといいと思うよ。 すまんスペル間違えてた。
TransrateじゃなくてTranslateな >>93
リファクタリングして短くなったのでSSであげますね
まぁまたケチ付けたい人が色々と文句ダケ言ってくるかもしれないけど気にせずに
まずは、ソース丸パクリでもどう動いているのか理解する事が重要で
その後に、少し修正してみて、例えば2つ先まで動くとかね
あと今は右、左の最大値は入れてないのでどこまでも行きます
そこは自分で最大値3以上は行かないという感じで修正してみてください
自分も最初は雑誌のBASICを打ち込んで覚えたので丸写しは有効な手段だと思います
ttps://i.gyazo.com/3bd49202b10be38565706a225ef0817e.png
ttps://i.gyazo.com/61e8b2b63be8983c9895bc7807c3592e.png
変数の説明すると
dir 方向
limit 移動限界
移動後、X座標が少数になるのはdeltaTimeを掛けているからなので、まぁこの辺も移動にぴったしな整数にするという事も勉強になる修正かなと思います んじゃ、せっかくだからケチつけてみようかな。
サンプルなんだから分かりやすく書いたほうがいいよ
ってことで、v2posのスコープが広すぎる。Update関数内のローカル変数でいい。ってかv2pos.xしか使ってないんだからfloat pxにしとけばいいだろ。理解するのに30秒かかったわ。(変数生成負荷を嫌ったんだろうけど、見やすさは重要だと思うんだ)
てかlimitって名前が分かりにくい。x座標の目的地なんだからtargetXとかでいいんでね?30秒(略) ついでに、dirこそUpdate関数内ローカルでいい。
int dir=tfTriangle.position.x<limit?1:-1;
って書いとけばcheckrightのなかでdirをゼロにする必要もない。 >>97
これ悪い例ね
pxにして直接potisionに代入できないから、たぶんこの人は作ったこと無くて覚え立てのスコープとか使ってわざわざ自分の才能のなさを書きにきてるのね
そんな時間あるなら自分流のサンプル作って出せばいいのに つーかbasicからやってるような人間がリファクタリングして他人に見せる用として提示するコードがこれなの?
変数大文字から始めるわ、ハンガリアンつけるわでびっくりなんだけど
初学者のため思うならこそちゃんとしたコード見せてあげるべきなのに >>100
ハンガリアンもスネークも人それぞれだろ。初心者スレでそんな細かいことで煽るなよ。
こういう記法がいいと思うってアドバイスだけでいいじゃん。
ちなみに俺はローワーキャメルが好きだ。
記法についてはここな。
ttps://www.google.co.jp/amp/s/earley.jp/blog/development/camelcase-hungariannotation-snakecase-programming/amp/ vector2.zero知ってるならrightやleftも使おうよ
なんすか、dir=1って
なんでv2pos.xに代入したあとcheck関数呼んでからv2posを代入してんの?
check関数でなにかしてるわけでもないならそいつらあとでいいよね?
check関数切り替えてるけど切り分け方がよくわからん
キー入力、移動先計算、移動方向判定、移動
移動方向判定だけなんで関数化したの?checkって名前もどうかと思うけど、まぁ命名はいいや ハンガリアンに否定的なサイトしか見つからなかったが、ハンガリアンにも間違ったコードが間違って見えるって長所があるからな >>101
人それぞれだけどサンプルとして提示するならせめて公式に合わせるべきでは?
このコードを参考にしてください、って初心者に提示してるんだよ?
if使うんですか?ってレベルの初心者に >>103
システムハンガリアンとかでググればハンガリアンの本来の意味を解説したとこ見つかるよ
間違ってもGameObjectだからgoってつけようなんて発想にはならん >>99
変数生成負荷とか言ってるんだからfloat型pxをxにしたnew Vector2を生成しろってことだろ 俺、駄目なハンガリアンの使い方してるわw
勉強になるなぁ 大漁だなw
サンプル作れないけど文句しか言えない人がこんなに居るんだねー
一応ここは素人が素人に答えるスレなので、素人にも分かるようにみなさんもサンプル提示すればいいと思うよ
きっと頭いいから見やすくて分かりやすいサンプル提示してくれるんだろうなぁ
だよねー
まさか、文句だけ言ってプログラム書けないとかないよね? 上のサンプルで充分だろ。
揚げ足とってウダウダ言っても、質問者の為にならんぞ。ほんとケチだけは立派なんて頭悪すぎるから辞めなよ。 >>108
俺のスパゲティーコードでいいならのせるぞ 最後のサンプル
Unityという事でアニメにして動かしてみた
まぁこういう事も出来るという事で…
ttps://i.gyazo.com/757bba69607b381739ab1976c078cf09.png
ttps://i.gyazo.com/17843bf97b820b605fec6434d4a2b9b5.png
ttps://imgur.com/a/xUWY8E3
つまり何が言いたいかというと、一つのやりたいことを行うのに沢山のやり方があって
そのどれをやってもいいしコードの書き方も色々とあるわけさ
まぁ仕事として他人と共同で作成とかになるとコード規約とか出てくるけど
まぁこんなとこでホビーとしてやる分には、まず動かしてみる事が一番大事
口だけで文句言うのが一番進歩もしないって事よ >>110
是非是非、他人のコードはいい勉強になりますので見て見たいです
自分では思ってもみない「気づき」が必ずあるので
>>111
public Transform trTriangle;
private void Awake()
{
trTriangle = GetComponent<Transform>();
}
これ使ってないので外すの忘れました^^; 111が初心者向けとしてのサンプルとしては一番良いと思う
なんでactiveの切り替えなんてトリッキーとも取れるような手法を一番に持ってきたんだろう
animatorだと他の要素を加えるときに制約になる可能性があるから、別手法として96みたいにすることもできるって流れが普通だと思うけど とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
ttps://i.imgur.com/Cor5zzP.png とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
ttps://i.imgur.com/Cor5zzP.png >>115
特に気になるとこ無い気がする
min maxは画面サイズが変更されたときに再計算すればいいじゃないとか思ったけど、この程度の処理気にするもんでも無いし >>115
GetAxis便利ですよねー
ただ今回の最初の要求って>>79なので上下いらないかなと思うのです
それと、位置移動なんですが、これって指定位置で止まるんでしょうか?
ちなみに自分はSerializeFieldの使い方知らないのですけど
TransformがPrivateなのですが、これってどこで指定するんでしょうか?
インスペクタじゃ出来ないですよね? あ、あとspeedもSerializeFieldになってますけど
ただこちらも初期値入ってないけど、もしかしてSerializeFieldにするとどっかで初期化されるというか
アタッチしたオブジェクトの何かを持ってきてくれるのでしょうか?
ちょっと自分にはわからない事が多いかもしれません>< >>118
SerializeFieldはprivateでもインスペクタで値を設定できるようにする属性だよ。
publicにしたらどこから値が変えられるかわからないからprivateにしてるんだけど、それじゃインスペクタで参照できないからこの属性で強制的にシリアライズしてる。 >>118
止まるというより2点で指定された長方形区画から外れると枠上に移動するようになってないか >>120
なるほど、これは便利な機能ですね!勉強ななりました!
ありがとう >>106
俺が反論しようとしたポイント先取りするなよwww分かってくれてありがとう!
>>98のコードだと振動しちゃうので、そっち突っ込まれるかなと思ったけど、検討違いな突っ込みだったのでびっくりだよw >>79
int[] x=new int[]{-8,-4,0,4,8};
int sw;int dir;int n=2;float nextX;
void Start(){transform.position=new Vector2(x[n],0);}
void Update () {
if(sw==0){
if(Input.GetKeyDown(KeyCode.A)&&n>0){sw=1;dir=-1;n=n-1;nextX=x[n];}
if(Input.GetKeyDown(KeyCode.D)&&n<4){sw=1;dir=1;n=n+1;nextX=x[n];}
}
if(sw==1){
transform.Translate(new Vector2(0.1f*dir,0));
if(dir==1&&transform.position.x>nextX){sw=0;transform.position=new Vector2(nextX,0);}
if(dir==-1&&transform.position.x<nextX){sw=0;transform.position=new Vector2(nextX,0);}
}
} >122 弟子 ◆rZPPjYuxmQ 2018/06/28(木) 19:22:46.38ID:/UzN8HYz
なんでコイツ質問スレ乱立してんの?
【ゲームエンジン】Unityなんでも質問スレpart1
1 名前:名前は開発中のものです。 2018/06/28(木) 15:25:16.78 ID:/UzN8HYz >>126
そっちのスレはなんでもありのスレ
ここは素人が答えるスレで注意事項がある
それぐらい読めるでしよ? >>127
そういうのを荒し行為、迷惑行為って言うんだよ
学習しなよ
「スレを立てる時は同じような話題のスレを乱立させないでください」という5ch利用の基本注意書きがある
それくらい読めるでしょ? この3人完全に荒しだな
菩薩@太子
弟子 ◆rZPPjYuxmQ
ダーク王鍬大使 ◆SoVpkB15jY
マジ迷惑すぎる 自分より初心者の奴にマウントを取りたいが為に「弟子」が立てた初心者専用スレ。
残念ながらマウントをとられてしまったので、そいつらを追い出すために再び別の質問スレを立てる。
以後、糞コテ「弟子」の隔離スレとなった。 adsでインプレッションが150くらいで$15ってついてたけどそんなけ儲けが出たという事ですか? Taitleオブジェクト(TXT表示だけ)が表示中は
敵オブジェクトが弾を発射しない様に改造しているのですが
Enemyにアセットしたcsの、弾を撃つ命令を
if文で、「Taitleオブジェクトが非表示なら弾を撃つ」とすればいいだけだと
思ったのですが、うまくいきません。
Enemy.csの弾の命令は
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
// ShotPositionの位置/角度で弾を撃つ
spaceship.Shot(shotPosition);
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
なんですが、 で、>>134を
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
if(title.activeSelf == false){
// ShotPositionの位置/角度で弾を撃つ
spaceship.Shot(shotPosition);
}
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
と書き加えました。
もちろん、
// タイトルオブジェクトを取得
private GameObject title;
// Titleゲームオブジェクトを検索し取得する
title = GameObject.Find("Title");
をクラス内に記載もしました。
そしたら、敵がゲーム中も一切弾を撃たなくなりました。
エラー文は
NullReferenceException: Object reference not set to an instance of an object
Enemy+<Start>c__Iterator0.MoveNext () (at Assets/Scripts/Enemy.cs:46)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)
(at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
です。 gameobject.findって非アクティブも検索するんだったっけ? >>134
このコードって恐らく公式の
https://unity3d.com/jp/learn/tutorials/projects/2d-shooting-game/creating-enemies
のコードでしょうか?
だとすると
「弾を撃つ必要がない時はyield break;を使用してコルーチンを終了させます。」
という具合に書いてるので、これを利用するとですね
// canShotがfalseの場合、ここでコルーチンを終了させる
if (spaceship.canShot == false) {
yield break;
}
となってるので、Titleが非表示の時はbreakするようにすればいいのかなぁと思います >>139
" title = GameObject.Find("Title"); "
を記載しているので、できていると思っているのですが、
NULLが来てます的な警告の先がこの場所みたいなので
Findがうまくいっていないかもしれません。
しかし、
private GameObject title;
title = GameObject.Find("Title");
と、たったこれだけで他所のゲームオブジェクトをFindできるんですよね?
それ以外にしなければならないことありますか?
>>142
そうです。弟子◆rZPPjYuxmQさんのアドバイス通り、
// canShotがfalseの場合、ここでコルーチンを終了させる
if (spaceship.canShot == false){yield break;}
if (title.activeSelf == True){yield break;}
と連続で記載してみました。
が、症状は同じで、まったく弾を撃たなくなってしまいました。 >>138
>>139
NullReferenceException: Object reference not set to an instance of an object
Enemy+<Start>c__Iterator0.MoveNext () (at Assets/Scripts/Enemy.cs:36)
この警告先は
" if (title.activeSelf == true){ ”
この部分みたいです。 ちなみに、エネミーを倒したあとに、警告が出ます。
エネミーを倒すたびに警告が出る状態です。 /i/|ii!//|!/!i/´i/ .|i |/ノ i\i!゙、:iヽ|:::| ヽ 'i ! ヾi |'!ヽ::::||::::::/:::::::::::::::::::::ヽ
i i 川i!ハ/" _! | │ 川 ヾ:ii ゙'∨ | ゙ヾiヽヽ;||:::::i':::::::::::::::::::::::::
ノ ノ/リ,,,,,,二三テ=''" ヽノ ル |ノノヽヾ ノ 、,,,ノ,、 iヽ:::||:::::i'::::::::::::::::::::::::::::
/  ̄ ´~~゙'''' ゙''‐- ..,, ,, ‐' `゙ヾミッ、,, ヽ::|::::/::::::::::::::::::::::::::::
,,イ| i' i" `'‐=' `'|/i!:::::i::::::::::::::::::::::::
i | :::::::ヽ::::ヽ::::::ヾ:: ゙、 l 〃::::: i//::::ハ::::::::::::::::::i:::
i i \\\\\ヽ ) ヽ ′′′ / /:::::/:::::::::::::::::::|::::
! | i ,,ィノ < :::: : /:::::/:::::::::::::::::::/::::
i! i i! /i/ ,r''''‐y'''.;、 \ /:::::/:::::/::::::::::::/:::::
゙i! | i /⌒' 、 Y:::::::::''::;;;;'.;.Y'⌒゙i /::::::/::::::/::::::::::::/::::/i
i i ゙! ん、,,__ヽノ:::::::::::::::::::;;;;;{,__,,,r'' /:::::::/::::::/::::::::::::/:::://
゙、ii! ゙| i ノ ゝ;;;:::::::::::::::::::;ノ 。 `i //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙iU i 。l '゛.. ‐ー:::::i | //::::::/::::::/::::::/:::/:::::i!::::::
iiミ! ハ i l ,,,,::: :::;;;;;...{ ° ゙、 //::::://::::/::::::/:::::/::::i::::ii::
i!ヾ!i ゙、! , ' |::: ::::ヽ ..} |゙ヽ......,.,.,.,,,///://::://::::/::::://::::i::::リ::
!ヽヾi i゙、 ___,,,/ }:: : ;;;::: ::::::::} レWノ'レi/、//::/:://:/:::/::/:::ハ:i |:: >>145
titleの中がぬるぽなんじゃ。
取得はどこだ?titleが居るってかactiveの時に取ってる?じゃないとfindで取れないぞ。 titleオブジェクトの名前がTitleじゃない(誤記)
Titleを非表示でなくdestroyしている
title取得以前に弾を撃とうとしている又は何度も取得しようとしている
非表示以降に生成されるenemyがある
多分このどれか
>>146見るとenemyが複数回生成されるみたいだから少なくとも最後は引っかかる >>144
>>145
さてでは問題は他でも指摘されているように「Title」オブジェクトがちゃんと指定されているか?
という事で、これの一番簡単な解決は
「public Text Title」 ←これをインスペクタで指定してあげる
(Textを使う場合、Using Unity Engine.UIを指定する)
そうすれば「Start」関数で「title = GameObject.Find("Title"); 」は必要なくなります
恐らく、Findが失敗しているからNullエラーとなているのかと思われますが
Findが成功しているかどうか簡単に見るにはFindの後に「print(title.name)」でもしてみると解ります >>143
有料アセットなので試せないのでなんとも・・・
恐らく記載のバージョンでやってみて動けば、現在の143さんのバージョン違いによる事じゃないかなとしか >>148
>>149
>>151
destroyしていないですし、
Using Unity Engine.UI無しでも取得できてる箇所もあるのでよくわからず、、
初心者のためか、どうしてもわかりません。
現在のゲームの一式Zipです、Unityで開いていただければ覗けると思います
8Mしか無い小さなファイルですので確認して頂いてよろしいでしょうか?
素材は公式チュートリアルのもので、ソースは2017に合わせて変更しています
https://ux.getuploader.com/zipcodezipcode/download/172
スクリプトフォルダのEnemy.csファイルを確認してほしいです。
コメントで消してます部分がやりたいことです。
なにが間違っているのか、ご指摘頂ければ幸いです。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) >>153
見たけど>>149の後半そのままじゃないか、確認してくれよ……
1) プレイヤーの操作でTitleオブジェクトがactiveでなくなる
2) enemyが生成されtitleに代入しようとするもactiveでないオブジェクトはFindで引っかからず空のまま
3) titleの中身がnullの状態で静的でない変数を呼び出したのでNullReferenceExceptionで止まる GameObject.Findはactiveじゃないと使えないんだって
Transform.Findなら使えるかな >>154
確認していただき、ありがとうございます。
>Titleオブジェクトがactiveでなくなる
認識不足でした、、そもそもactiveでなくなる、というのは
どういう状態のことですか?
自分はtitle.activeSelfの真偽はtitleの中のひとつのbool変数で
画像(テキスト)の表示非表示のスイッチみたいなものかと
思っていました。。。
title.activeSelf==falseだと、activeでなくなっている
という認識なんですね?
でも、プレイヤーが死亡したあとタイトル文字が出ますよね?
その状態はtitle.activeSelf==tureになって、
activeである状態ではないのでしょうか?
タイトル文字が出ても、敵が残っていると
そいつは前に進んでいます。
その時に、弾を吐かない様にしたかったので
コメントアウトしてるソースを記載しようと思ったんですが。。
自分の認識違いがなんなのか
正してもらえませんでしょうか 調べてみると
GameObjectのactiveSelfは
ゲームオブジェクトのローカルのアクティブ状態(読み取り専用)
画像の非表示はそのオブジェクト自体の動作を
停止させて非表示にしているのですね、、
しかし、やはり、プレイヤー死亡後は
そのTitleオブジェクトは動き出してるはずで、、
ああ、もしかして、タイトル画面が表示されていて
敵が流れていても、その時にはすでにstart()を通らないから
title = GameObject.Find("Title");ができない状態だから? >>153
ソース見ました
弾を打つ処理って無限ループの中で行っているのですね
なのでループの中に撃たない処理をいれないとダメですね
それと「Manager.cs」で既に title = GameObject.Find("Title");されていて成功しているので
他で使う場合は、まず宣言で
// タイトル
public static GameObject title;
の様に「public」な「static」の変数にします
で「Enemy.cs」の無限ループ中で
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
//弾を撃たせる
//ShotPositionの位置/角度で弾を撃つ
if (Manager.title.activeSelf == false) spaceship.Shot(shotPosition);
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
これで行けるかと思います
一応、インスペクタでタイトルを操作した画面です
ttps://imgur.com/a/qEZk4ej >>158
ありがとうございます!
あの、質問なんですが今回はManager.csはメインスクリプトかと思うんですが、
要は、メインスクリプト内で取得した各オブジェクトの情報は、
そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
public static GameObject 変数名;と記載したあと
以後スクリプト名.変数名で呼び出すことができるようになるのですか??
そして>>158の内容からですと、自分は今回他のスクリプト内で使用する記述方法を
間違っていた(public static GameObjectなど)ということで、
>>154さんや>>155さんの指摘である「activeじゃないから」云々は
今回は当てはまらない、ということですか? findするタイミングを考えろ
タイトルでる
消える
敵出現
find
敵消える
敵につけたスクリプトだとfindできるタイミングがないんだよ
findするにはスタート時から消えないオブジェクトにスクリプトをつける必要がある >>159
>要は、メインスクリプト内で取得した各オブジェクトの情報は、
>そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
>public static GameObject 変数名;と記載したあと
他のスクリプトで変数を使う場合には「public static」にするだけですね
>以後スクリプト名.変数名で呼び出すことができるようになるのですか??
呼び出すというか、使えるという感じでしょうか
A.csで定義した変数henをB.csやC.csでも上記の様に宣言すれば使えるけど、それぞれが呼び出して別の変数としてではなく、あくまでA.csのhenであり、B.csでhenに1を入れ、次にC.csでhenに3を入れた場合、次に参照する際には3となってます。
プロジェクトでユニークになってると思います。ですので、あれ、どこでこの数値いじったかな?とかいう事が起きるのでご注意ください。
>>>154さんや>>155さんの指摘である「activeじゃないから」云々は
>今回は当てはまらない、ということですか?
うーん、すいません154さんや155さんのところ読んでないのでこれについてはよくわかりません、申し訳ないです
また何かあれば気軽に質問してください、私で分かる範囲でお答えさせていただきます
お互い頑張って作品作っていきましょう! >>159
いや、直接的には「activeじゃないから取得できない」で合ってる
現状だとenemyが生成されるたびに各個にtitleを取得しようとするから生成のタイミングでtitleが非activeだと取得に失敗してしまう
その解決法として「ゲーム開始直後、activeなうちに一回取得・staticな変数に入れて全てのenemyで使い回せ」というのがこのコテの提案 次作るときは、敵マネージャー.csを作って、敵生成は全てそこでやるといいよ。 PG初心者になります。
C#で、下記のように".psd"の拡張子を指定したいのですが、
大文字、小文字を区別せず指定する場合はどのようにしたらよいでしょうか。
".psd"".PSD"".pSd"でも問題ないようにしたいです。
ご教授お願いいたします。
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd"; >>164
Unity関係ない気がしなくもないが、自力でやるなら文字を一旦すべて小文字化してから比較すればええんやで 指定時じゃなくて比較時に大文字小文字区別なしでString.compare()やったら?
どうしてもって言うならStringじゃなくてregexでやるか。 >>165
>>166
ご指導ありがとうございます。
下記で取得したものを
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
private void GetSceneTreeObjByFiles( ref List<SceneTreeObj> listParent, string downloadPath )
{
var path = FTP.CommonWord.GetDownloadPathByPlatform( downloadPath );
{
var files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionPSD );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionJPG );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
}
}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
こちらで条件付けしているのですが、
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd";
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
この場言、"downloadPath"を小文字化するのですが、どのように書けばよいのでしょうか。
急遽直さなければならず、ご教授いただければ幸いです。 >>167
試してないけど
downladpatth.ToLowre()でならないかしら >>169
入力ミス
downladPath.ToLowre()
ね。 ToLower()
ttps://msdn.microsoft.com/ja-jp/library/e78f86at(v=vs.110).aspx 文字列 小文字 C#
でググれば一発
知識が少なくてC#なのかUnityなのかわかんなくても結果は同じ >>弟子 ◆rZPPjYuxmQ
すみません、>>158ができませんでした。
宣言したあと、
「Manager.title.activeSelf」では
下線のエラーが出てしまいます。
https://dl1.getuploader.com/g/6%7Csaro111/340/000.jpg
確かに考えてみると、
public static GameObject title;の宣言から
使用時にManager.titleでは繋がらない気がしますが、
宣言場所が問題なんでしょうか? Manager.title の青文字、Managerはいらないよ if(Manager.title.activeSelf == false)
じゃなくて
if(title.activeSelf == false)
ね。 >>175
ありがとうございます。
そう思って、自分も「Manager.」を削ってみたんです。
そしたらちゃんと動くんですが、
敵が弾を一切撃たないままでして、、、 そのスクリプトをアタッチしたゲームオブジェクトは、もしかして複数ないだろうね? static書く場所間違えてんぞ
宣言すんのはManager.csの中だ Enemy.csの中にはFindがないだろ
Maneger.csの中にFindがあるからそれを使わせてもらうってことだ
ちゃんと理解しろ このEnemy.csが付いているオブジェクトにSpaceshipコンポーネントも付いてんの?
24行目の
Spaceship = GetComponent<Spaceship>();
が気になったんだけど。
Enemy.csをつけてるオブジェクトのinspecter画像あげてみなよ。 なんだ!その言い方は。自分で作ったこともないクセに生意気なことを言うなよ! >>176
あ、前にソースあがってますね。みてきます。 whileのところ。titleの取得はここじゃなきゃ意味ない。
https://i.imgur.com/lTOyNG8.jpg >>183 =>>184です。
whileの中の
if (spaceship.canShot)
 {
 spaceship.Shot(shotPosition);
 }
のまえに
GameObject title = GameObject.Find("Title");
 if (title)
 {
 spaceship.canShot = false;
 }
を付け足すと一応なるよ。
でもこのプロジェクト、初心者にはむりだろ。なんでupdate()じゃなくて無理矢理while
使ってんだろ。 おいおい
もう正解でてるのに違うこと書いて混乱させるなよ >>173
ごめんね、分かり易いように全ソース上げるべきだったかな
とりあえずSSです
ttps://i.gyazo.com/4f40fc7de6ba6cc5761b406f7bc43c5c.png
あと前回からも分かるように名無しさんはソース見て無かったり、とんちんかんな答も多いので間にうけないでね まず、レスをくださった名無しの皆さま、
ありがとうございました。勉強になりました。
>>弟子 ◆rZPPjYuxmQさん
ソースをあげるお手間を取らせて申し訳ありません。
おかげで自分の間違いも理解でき、無事ゲームも動きました。
ありがとうございます。
それと今回はとても勉強になりました、
Unityゲーム制作方法がまたひとつ理解出来たことを実感できました。
投げることなく、これからも頑張っていきたいのでまたお時間がある時は
どうぞよろしくお願い致します。
>>185
>でもこのプロジェクト、初心者にはむりだろ。
>なんでupdate()じゃなくて無理矢理while使ってんだろ。
考えてみると、確かにそうでした。
start()にはSpaceshipコンポーネント取得だけを記述し、
update()を作り、そこに移動とショットのメソッドを記述するのが
よくみるソースですよね、、気になるので
ちょっと自分でそうしてみます。 >>189
その修正は今後の力になりますね
while(true)の形式は昔のゲームでよく見ますね
何にせよ途中で投げ出さない事が力になると思います >>169
167です。
遅くなりましたが、ご連絡いただきましたカタチで対応したところ上手くいきました。
ご指導ありがとうございました! C言語とかどこから勉強すればいいのか
全くわからん
パーツ組み合わせて勝手に作ってくれるツールとかないんかな >>192
なに、Unityスレで蟹飯やらUPEの話をしたいとな? >>192
アセットを探しましょう!
有料アセットにはいいものがいっぱいですから! プログラミングで混乱してる奴はスクリプト間の動きを知ったほうがいい。
シングルスレッドだけで良い。その先の技術はまだまだ後回し。
まずは、この図を頭に叩き込んで見てくれ。
https://docs.unity3d.com/ja/current/Manual/ExecutionOrder.html >>192
別に勉強することなんかない
やりたいことが決まってれば、それを行うための方法をgglなりここで聞けばいい
やりたいことが決まってないなら簡単な事、例えば四角を表示して墜ちてくる、次にA,Dで左右に動かすなんかやればいいと思う
その次はぶつかった時の処理やミサイル発射とか、一つできたら次に広げていけば自然と身につく >>196
何も出来ない人は質問に答えないで下さい。迷惑です >>193
今時蟹飯なんていってわかる奴いるのかよ。 >>195
シングルスレッドってそのページの
スクリプトライフサイクルフローチャートって奴ですよね?
項目が多すぎて、しかも知らないものばかりで
わけがわかりません。もう少しシンプル化できませんか? >>200
え、まじ?統合環境使いだしてからずっと白背景だな。
たしかにCビルダー使いだす前は、黒背景にしてたかもしれん。 >>201
う、マジか、この図で分からなければ、中々キツイぞ。
まとめては俺は必要無かったんで良いリンクとかは、他の賢人に任すわ
少しだけ概要な
シングルスレッド云々は、unityは元々シングルスレッド志向のmonobehaviorの動きで動いてるってこった。
そしてその動きがこの図な
んで、この図の
awake〜start迄が最初の1ターンだけ発行
んて、fixed update〜yield waitfor fixed update迄が、固定秒数毎に毎ターン
update〜late update迄がベストエフォート秒毎の毎ターン
それ以降のは、素人としては難しいんで、覚える必要無し
て所か、ターンて書いたのは分かり易くする為な。
本当は適切な言葉あるんでそれは調べてね。 言い忘れたが、重要なのは
これらの動きが、全ゲームオブジェクトに貼り付けられたスクリプト(monobehavior)で一斉に並列(あくまでシングルスレッドの分割)で動作するって所な
まあ、がんがれ これが読めないってのは…
あぁ、初心者スレかそういうレベルの初心者も居るか。 unityで球と直線の交点を求めるにはどうすればいいですか? 一番楽なのはRaycast
それ以外は直線と円の交点を求める式で検索 質問です。
キーボード入力のGetAxisを使ってプレイヤーを動かすタイプのPCゲームを作っていて、
マウスでも入力が可能にしようと思い、仮想ジョイパット等の記事を参考にしてみたのですが
肝心のキーボード入力とマウス入力との入力加速度等のすり合わせがうまくいきません。
1.(マウスをクリック等すると)キーボードの矢印キーを押したことになるスクリプトはありますか?
(自分でも探してみたのですがキーの代入のようなものを見つけられませんでした)
2.もしくは、GetAxisの入力が0から1.0fになるまでの時間と加速度の式はどこかで見れますか?
(それが分かればマウスでの入力もGetAxisと同じ挙動にできると思います) edit>projectSetting>inputは出せるか?
そこでsizeを一個増やして、nameに好きな文字入れてボタン作ってくれ
んで、positive buttonにleftかrightかupかdownか押したことにしたい方向いれてくれ。
んで、alt positive buttonに「mouse 0」って入れてくれ
Input.GetAxis("つけた名前")で、マウスか矢印おした時にaxis値が取れるかと思う。
0から1になる増加値らへんはここみてくれえ
https://qiita.com/RyotaMurohoshi/items/7868752a3f056affa2df 迅速な回答ありがとうございます!
しかし、私の質問が悪かったのですが、私が試していたのは下記のタイプでして、(丸きり同じ仕様ではありませんが)
ttp://kan-kikuchi.hatenablog.com/entry/uGUI_Joystick_1
inputそのものを増やす方法で対応できるのかやや困惑気味ですが少し色々試してみます。
ありがとうございました。 UnityでWindowsMR用のプログラムをつくってるのですが、
ハンドコントローラのボタン操作でテレポート(ワープ)しないようにするにはどうすればいいですか?
MixedRealityToolkit->ConfigureででてくるApplyを3つとも適用した状態です 難しそうな質問ですねぇここは初心者用なので答えが出ないかもしれませんが
とりあえずggったのですが、きっともう読まれているのですかねぇ…
ttp://tks-yoshinaga.hatenablog.com/entry/2017/08/23/171354
ttps://framesynthesis.jp/tech/unity/windowsmixedreality/
ttp://sirohood.exp.jp/20180302-469/ uGUIについて質問です
Canvas->空のGameObject->複数のテキスト
という構造で複数のテキストを表示しているのですが
たまにすべてのテキストが空のGameObjectの座標に集まってしまい、レイアウトが崩れてしまいます
その都度手動で元のレイアウトに戻すのが面倒なので、レイアウトが崩れない対策があれば教えてください >>215
アセットストアで検索してみてはどうでしょうか? >>215
テキストの親のobjectにAddComponentでLayoutにあるLayoutGroupを追加してみてください
↓同じテキストの位置
https://i.gyazo.com/dd691dbdac0645698fb6c24c381c3573.png
↓layoutをオンすると自動で整列
https://i.gyazo.com/02e2c86353a4e6067c6a9e5076833933.png
これはVerticalLayoutということで縦に自動で整列します
他にもいろいろあるのでご自分の要望にあったのを取り入れれば良いかと思います >>215
たまにそうなるのは根本的に何かが間違っている
原因究明が大事 >>215
実行中じゃないのか?
実行中に変わった座標が、実行終了後に維持されるのは聞いたことないなぁ。メッシュやマテリアルは実行中に触るとそのままってのはあったけど。 >>217
丁寧な回答ありがとうございます
私のプロジェクトに
空のゲームオブジェクト->レイアウトグループ->テキスト
の構造がありましたが、
その場合はレイアウトグループの位置は変わってしまっていましたが、グループ内のテキストの配置は維持されていました
つまり、レイアウトグループの子の構造は崩れないが、空のゲームオブジェクトの子は崩れるということです
結局、空のゲームオブジェクト以下にGUIを配置しているのが問題な気がしますね
対策は、入れ子の親には必ずレイアウトグループをアタッチするといったところでしょうか
しかしレイアウトの自由度が制限されるのが問題ですね・・・
>>218
原因は未だに不明です
再現性の無い現象なのでなかなか原因究明が難しいです
>>219
気づいたら崩れているのでタイミングはよく分かっていません
感覚としては、実行後に崩れている傾向が強いと感じています >>220
原因が不明?
それ最悪だよ、
泥縄式に対処してたらこれから先バグに悩まされる
リリース後にもいつ発生するかわからない
プロジェクトが小さいうちに原因をはっきりさせることをおすすめする 2017.3のバグみたいです
報告多数ですね
https://forum.unity.com/threads/very-irritating-ui-bug-has-anyone-else-experienced-this.510596/
I encountered this after upgrading to 2017.3. One of my UI windows was all messed up,
so I tried to fix it, and upon hitting "Apply", some elements auto-centered.
After reviewing everything for rogue layouts or anything like that, and with it happening on other elements, I went to the internet and came across a few threads like this.
Fortunately, I saved a copy of my 2017.2 project and going back was as easy as renaming a folder.
But I think this is a pretty severe bug, it could effectively stale a project relying heavily on UI. さすが公式フォーラム
現役の人が集まるだけあって被害者多数でワロタ このバグ数ヶ月放置されてけっこう問題になってたみたい
エディターのバグとかどうしようもないし、最新版を使うことにしました >>222
日本語で話せやガイジ
ここは日本のUnityスレだぞ >>225
いや、unityつかうなら英語くらい覚えろよ…… >>225はアセットおじさんか
言葉の節々に知能の低さ、羞恥心の無さがにじみ出ているのは流石だな
誰か「アセットを買えば英語力も上がるし羞恥心も備わりますよ」って教えてやれよ >>229
アセットを買えばそんな勘違いもなくなりますよ スマホアプリ作っている人は
iphoneとandroid両方持ってるの?
androidしかないんだけどipone必要ですか?あとmacも無いんですけどこれもいりますか? >>231
macないとiPhone開発は実質無理だと思っていいよ
両OSにアプリ出すならmacは必須
iPhoneはなくても最悪mac上のエミュとかiPadとかでもなんとかなる 同じアプリでもiPhoneのが売上いいみたいだから出したいけど、mac必須ですか…
androidでmac買えるぐらい稼げたら買おうかな CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.
って言われてAndroidでビルドができないよー、ちゃんとAndroid SDK toolsを25.2.5にしてもダメだったし
SDKが古いかもってことも書いてあったからSDK消して入れなおしてtoolsを25.2.5にしてビルドしてもダメだったし誰か助けてー! >>233
AppStoreは毎年1万くらい掛かるけど、GooglePlayなら2500円払えばあとは儲けるだけだからなぁ。 しっかり考えてちゃんとしたもの作って出さないと
GooglePlayは簡単には回収できないよ 個人アプリ開発者の9割はその年間2500円も稼げないけどね そもそも自称開発者は、アプリを完成させ、リリースすることすら・・・ それはお前が出来てないだけ。皆そうだと思っていれば幸せなんだろうな ソーシャルゲームが流行る前はしょぼい物作ってもGooglePlayのリストに出るから余裕で回収できたけどね。
今はリリースされたことすら知られないから…。 始めたばっかだけどunityで適当に画像入れてsave projectして、入り直したら画像じゃなくて何か別の物に変換されててlayer編集が効かなくて心折れそう、誰か助けてクレメンス さすがにそれじゃエスパーさえわからんで
なにがSSとか無いのん? 左が初期の画像、変わったのが右側って感じ
うまく貼れてなかったらスマソ
http://imepic.jp/20180726/261250 >>249
右みるとトランスフォームが子供になってるようだけど
手順としては、シーンに画像を張って、セーブしただけですか?
もし可能ならプロジェクトごとアップできます? >>250
そうです、貼ってセーブしただけです。
プロジェクトは仕事から帰ったら揚げます(社畜)
本体の設定に問題ある感じですかね? 一応画像をアセットにドラッグし、そのごヒエラルキにドラッグして
セーブした画面です
ttps://i.gyazo.com/6660cd11fc79b98801d275614fe26f8f.png
特に変化しないようです
自分はUnity2017.3.1f1を使ってます Unity 2018.2を使っているのですがunityの設定はどこでできますか?
ちなみに画像のバージョンはUnity 4.2.0 です
https://i.imgur.com/kyxzjRZ.png いい忘れてました自分はWindowsを使っています >>253
>unityの設定はどこでできますか?
Unityの何の設定でしょうか?
>いい忘れてました自分はWindows
画像はどうみてもMacですが、人の画像でしょうか? >>253
解決しました
>>255
再生中に周りの色を変える設定をしようとしたのですがeditのところでできました >>252
結局本体再DLして解決しました
付き合ってくれてありがとうございます… >>259
無事に解決してなによりです!
また何かあればお気軽に! 例えばシューティングなどで同じ敵を100体出したいとする
シーンに1体作ってあとはコピペで99体作ったとする
作ってる最中にこの敵に変更を加えたくなってきたとする
例えばタグをEnemyに変えたいとか
そうするとこの場合だと100体全てを修正しないといけなくなる
一方プレハブから100体作った場合だと
プレハブ本体を修正するだけでシーン中の100体が修正される
とかね >>261
プレハブはクローンだと思えばいい。
本体(オリジナルとも言う)のコピー品さ。
利点は大量に画面に表示した時に処理落ち(スロー再生状態)になりづらい。
ワンピース海賊無双というゲームをパクって作った場合
プレハブを使って作ると同じ物が作れるが
プレハブを使わないで作ると処理落ちが激しく遊べる状態ではない。 >>262 >>263
レスありがとうございます。
directX、C++からUnityに乗り換えた者なんですが
プレハブってのは、
敵のクラスをインスタンスしたものだというイメージでいいんでしょうか?
それとも、敵のクラスを定義したもので
あとでシーンの中でプレハブをインスタンス化させるのでしょうか? >>264
敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
作成タイミングは自由。
シーンの中で動的にプレハブを作成する事も可能。
エディット画面で事前にプレハブを作成して配置して置く事も可能。 >敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
こんなに堂々と嘘をつく奴も珍しいなw
素直にマニュアル見とけよ
https://docs.unity3d.com/jp/current/Manual/Prefabs.html >>266
説明に間違いなし。
名前の通り初心者にシンプルに説明するのが目的で細かい説明は全てカットしてる。
初心者には自信を持って
『敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK』
この説明を推す。 >>266-267
中級者以上の知識がある人達には
ゲームオブジェクト自体もクラスと説明すれば分かってもらえるかと。
ソースコード上で行うインスタンス生成を
Unity的な言葉に直したものがプレハブと呼ぶにすぎない。
相当細かく説明すると厳密には違うかもしれないけどね。 Instantiateなんてもんがわざわざあのになんでインスタンスにこだわるん?
プログラミングの知識あるならシーンに設置したオブジェクトがインスタンスって方がわかりやすいぞ
シーン内に個別に設置(インスタンス)したオブジェクトの値を変更してもプレハブ(クラス)には影響がないが
プレハブ(クラス)の値を変更したら個別に設置(インスタンス)したものにも影響がある
インスタンスからクラスに無理やり影響を与えるのがApply ほーんじゃあプレハブからクローンしたゲームオブジェクトはなんなんですかね
あれこそインスタンスじゃないんですかね プレハブはプレハブでいいじゃないか。いちいち既知の概念に置き換えないと理解できないの? 再利用しやすくするものくらいの認識でいいんじゃね? 博識のある方達は、やはり呼び名とか拘らないといけないんですね大変ですね。
私なんかは、インスタンスとか未だに理解していません、できてません。
ただスクリプトで複製したり、親子入れ替えたり消したり、ここに置いときゃいい、ぐらいの知識で十分作れてますから、初心者レベルは楽で良いですよ。 あえて言うとプレハブはインスタンスのスナップショットな。instntiateはクラスのインスタンス化とはまた違った仕組みだし。無理矢理他言語の経験持ち込まずに、素直にマニュアル読んだが利口。 >>270
>>271
シリアライズ機構を調べて出直しておいで。 >>268
惜しい、インスタンスを保存したもの、だったら合格点。 盛り上がってますね。
プレファブはテンプレート化されたファイルですよ。
クラスをインスタンス化したものと言うのはメモリ展開されたクラスです。不正解。
プレファブはキャッシュされる前のファイルです。
まあ、キャッシュして書き換える事も出来ますが、どこぞのボッキングが、アセット書き変わった言って嘆いてましたんで、注意が必要です。 初心者は議論なんかするなってか
そりゃ永遠に初心者やな >>279
お前には自分で立てた専用スレがあんだろ。あ、ここもでしたね、失礼しました。 匿名かつ初心者ばっかりだからこそ出来る、このいい加減な議論。楽しいじゃないか。 まあ、弟子さんも十分初心者なんで、議論みて行って下さいな。
アレですよ?ここで、出てきたキーワード、分からなかったら、ググると良いですよ〜 スレチなマウンター共は
【質問以外なんでもOK】Unity雑談スレッドその1
http://mevius.5ch.net/test/read.cgi/gamedev/1531742192/
で遊んであげるからここにこないでね、迷惑だから 昨日からの酷い流れを見て感じたけど
初心者同士で馴れ合ってても百害あって一利なし
正しい知識を習得するのが大事
調べ物は公式マニュアル見る習慣を
最低限公式チュートリアルの初級(英語版)はやったほうがいい 紙パンチに興味持てんわ
285さんのは正論ですね。
でも超概要として、こういうやり合い見るのも有りじゃないすかね。
自分も知らない事結構出てくるし。 ここはクソコテ弟子が初心者相手にマウント取るために立てたスレなんで
初心者以外が質問、回答すると通報されてしまいますよ。 決まったobjectの当たり判定内にいるかつボタンを押したときのスクリプトが組めません、、&&を使えばいいという知識でやったところコンパイルエラーが出てしまいました。名前の一致などは確認済みですこんなタイミングですが教えてもらえると助かります。、、 エラー文とその行を貼れ。
まずはそれからだ。テンプレ if (collision.gameobject.name == "Perfect")&& (Input.GetKeyDown(KeyCode.LeftShift));
{
Destroy(gameobject);
}
の部分です。エラーは多いんですが
・`UnityEngine.Collision' does not contain a definition for `gameobject' and no extension method `gameobject' of type `UnityEngine.Collision' could be found. Are you missing an assembly reference?
・Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
・The name `gameobject' does not exist in the current context です collision.gameobject.name をログ出力できるかやってみ? ログ出力がなにかいまいちわかってなくて、、すみません。
&&は半角にしてもビジュアルスタジオ上で無効ですと書かれてしまいます Unityの「シリアライズ」というのは、インスペクタみたいなのに表示できるようにする為などに、データをUnity内部機構が読み込める独自様式に変換するという意味だろ
プレハブはあくまで型と初期値の定義であって、プレビュー時や実行時にシーンに生成されて初めてメモリ上に占有領域が確保されて情報が記憶される(メモリ上オブジェクトとしてインスタンス化される)
だからUnityプロジェクト中のヒエラル木も、厳密には型と初期値の定義でしかなく、インスタンス化されたメモリ上オブジェクトではない
Unityゲームオブジェクトやプレハブのインスタンス化は、Unity内部様式向けにシリアライズされた型と初期値の定義の情報に基づいて「デシリアライズ」することで行われる
あと日本語の解説ページは分かりにくい
さらにあと「スナップショット」は通常、システム全体の一時的状態を指すから、システムの構成要素(プレハブ)に使うのはニュアンスがずれてる >>293
if文の最後にセミコロンあるよね。
それをまず消してみて。 >>294
俺もそれ思った。スナップショットだとvmを思い浮かべてしまうわ。
ストレージの技術感のが高いよな >>290
Debug.Log (collision.gameobject.name);
で、何が表示されるか? >>290
if( (collision.gameobject.name =="Perfect")&&(Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
こうかな? >>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
いただいたプログラム打ちましたが駄目でした、、一応全文載せてみます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class judgePerfect : MonoBehaviour
{
void Update()
{
if ((collision.gameobject.name == "Perfect") && (Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
}
} >>300
>>>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
で、これで表示された内容は? このプログラムに関する項目じゃないオブジェクトの詳細のようなものが追加されました collisionが唐突にでてきてるけど根本的に間違ってるんじゃね
OnCollisionEnterもつかってないし >>294
プレハブが型と初期値の定義なんてどこに書いてあるよwww日本語と英語には書いてないから、あとは俺が読めない韓国語か?
gameObjectとコンポーネントのSerialized dataだって書いてあんだろ。 ohiohiまた威勢のいい○○が沸いてきやがった
すぐ韓国とか言い出す糖質ッぷりには失笑を禁じえないな
>Serialized data
そのdataの中身は何なんだ?噛み砕いて言ってみろ、二等兵見習い >>308
シリアライズされたデータだろ。プレハブには複数のゲームオブジェクト、複数のコンポーネントがシリアライズされて保存されてる訳だけど、型って何? >ゲームオブジェクト
>コンポーネント
これらはとどのつまりはクラス。
クラスとは何か? 基本的にゲームプログラミングでは
シーン内で生み出す敵とか大抵配列に入れ込んで管理しますよね?
for文でその配列の要素回して抜き出したり。
でもUnityの2Dシューティングとかのチュートリアルを確認してみると
次々と生み出された敵を配列に入れ込む処理が見当たりませんが
これ、個々のオブジェクトの把握はどうやってるんですか? >>310
なるほど、型か!ってなんねーよww
シリアライズって意味わかってんの?クラスを保存じゃなくてインスタンスを保存だろ。
ヒエラルキー上のインスタンス群をシリアライズして保存するんだから、どちみちハズレなのよ。 >>313
わかったわかった
お前の人生は大ハズレだな
インスタンスについて基本的な理解が不足してるぞ
ヒエラル木も結局は型定義と初期値に関するシリアライズされたデータの集まりで、プレビュー時や実行時に初めてインスタンス化されてるんだよ >>316
プレハブの話だよ、ヒエラルキーからゲームオブジェクトをドラッグしてプレハブ作成した時点でヒエラルキー上のはプレハブインスタンスになるだろ。
そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
このプレハブソースを型だったて言い張るのは無理があると言う話だ。だからどんな意味で型と言ってるか聞いたんだ。雛形って意味なら俺も納得。 >>317
あ、ヒエラルキー上のプレハブインスタンスはソースと変更の参照でOOPで言うインスタンスじゃないのはわかってるから。 >>317
>そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
ヒエラルキー上のプレハブインスタンスが、実行時やプレビュー時にデシアライズ、と付け加えとく >ヒエラル木
デバッグ時にはモニタできるから、「シリアライズされた初期値およびデバッグ実行時の現在値」という表現が良いのか
しかしなぜ「シリアライズ」という言葉を使うんだろうか
ヒエラル木を構成する連続した要素の一つに組み込むという意味なのか >>320
お前ら何でプレファブの中身見て見ないの?
YAMLで書かれたファイルだって一発で分かるだろ、つまりシリアライズされて保存されてるファイルって事だよ。
一方ヒエラルキーに見えてるのもファイル。
再生実行した時だけ、メモリに展開されてる。
わかった? >>321
へー、ヒエラルキーに表示されているのはシーン上のオブジェクトのリストじゃなくてファイルなんだぁ。
ファイルシステムのどこにそのファイルがありますか?またシーンビューで編集しているときはメモリ上にはなくてディスク上にあるんですか?
公式のマニュアルとは違う説明で混乱しそうです。 >>323
右上のケバDebugにするとLocalIdentifierInfileってでてくんだろ。
隠蔽されてるが、あるんだよ。それアクセスされると色々ぶっこわれるからな。 初心者スレでマウント取りたいのは分かるから巣に帰って
ちゃんと新しいの作ったからさ
【3Dゲームエンジン】Unity質問スレッド37
http://mevius.5ch.net/test/read.cgi/gamedev/1533351108/ 初心者に分かるように言ってんじゃん。
紙パンツスレ飽きちゃったんか?あっちで吠えてろよ おまえらの話は誰にも通じてないし役にもたってないぞ >>326
YAMLとは?
シリアライズとは?
ケバdeaugとは?
初心者なんでまったく訳わかんないですわ >>324
それってシーンファイルに書いてある識別IDじゃない。んでシーンを保存するまで0だよ。保存する前のヒエラルキーはどう説明するのさ。 >>329
Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
保存前のヒエラルキーは見た目だよ、ドラフト扱いな。
もう少しEditorとUnityEngineの違い分かった方がいいな。 >>312
自分で工夫する事で昔の「main()ループ」に近い物が作れる。
@:空のゲームオブジェクト(Empty)を適当な位置に作る。名前は仮に"GameMain"としておく。
A:次に適当な場所に"GameMain.cs"と仮の名前でC#スクリプトを作る。
B:Aを@にアタッチ
C:Aの中にprivate属性などGameObject型の動的配列の"元だけ"を宣言 → 例:GameObject[] Enemy;
D:Aの"start()"などで実際に必要な数の配列を作成 → 例:Enemy = new GameObject[3];
E:"GameObject.Find("※オブジェクト名").gameObjectを使い、先程作成した配列にシーン上のGameObjectを関連付けていく → 例:GameObject[0] = GameObject.Find("Enemy0").gameObject;
F:後はGameObject[0]を使う
当然他のやり方も無数にある。 >>312
次の内容はおまけなので意味不明な場合は気にしなくていいよ。
ソース上でのオブジェクトの管理のしやすさはメモリー使用量に反比例する。
今までのやり方(main()ループのやり方)だと扱いたいオブジェクトを最初に配列に全て格納するのでそれだけ沢山メモリーを占有し続けることになる。
旧型のゲームを作る場合はこのやり方でも問題ないし今でもこっちの方が扱いやすい場面が多々ある。
とくに小規模ゲームの場合はこっちのやり方で全然いいと思う。
じゃあUnityがこの古き「main()ループ」のやり方になっていないのは何故かというと
中〜大規模のゲーム作成も想定して作られてるのもあると思う。
この規模になると次の事を実現しないといけない。
・必要な場面にだけメモリだけを使いこまめに確保と解放を繰り返す節約型モデル
・もともと非常に重い3D物理演算を実用レベルで運用する
・もともと複雑で重い3Dの当たり判定処理(コリジョン)をプログラマが手軽に扱えるようにする
これの実現でメモリー制約の厳しいスマホで苦労せずに3Dゲームを作れたり
MMOやオープンワールド系のゲームを作れるポテンシャルを実現している。
FCマリオやテトリス作るなら"main()ループ型"でいいけど、モンスターハンター作るなら"main()ループ型"では死ねるよという感じ。
実際に何かを作ってみると分かるが当たり判定(コリジョン)は"main()ループ型"で回して中でいちいち判定するより
オブジェクト1つ1つにC#スクリプト埋め込んで当たった時に勝手に「当たったよ!」とイベント通知してきてくれる方が100%楽。
余談だが、UnityやVisualStudioのようなGUIでモデルを配置できるエディッタ時代ではなく、コマンドプロンプト時代のCUI時代にソースで扱っていたクラスのカプセルの概念、あれをビジュアル的にも再現できている今のUnityのモデルだとも感じてる。
今のUnityのやり方が、昔に目指されていたオブジェクト指向プログラミングの1つの完成形・理想形なんじゃないかと思う。
アセットの概念なんかはまさにオブジェクト指向プログラミングのカプセル可の恩賜だと思うよ。 >>330
それはどこですか?
誘導お願いします
ここは、そういうスレなので教えてください >>332
>>>329
>Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
>シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
ヒエラルキーの表示じゃなくて、ヒエラルキーに表示されている、シーン上のオブジェクトの話をしてたつもりなんですけど。
>未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
未保存のときもlocal identfierfile 0のままシーンビューやヒエラルキービューで編集出来ますけど、そのオブジェクトはメモリ上じゃなくてどこで動いてるんですか? >>337
シーン情報はシーンにある。プレファブ情報はプレファブファイルにある。
てか見たんだろ?ファイルにあるわ。
もちろん画面に表示したり、編集させるにはメモリを使ってる。だけど電源オフったら消える通りストックはされておらん。
編集はできとるが、これがそのまま再生実行時に使われると思ってるところがあんたが嵌ってるところだ。
新規作成したらEditor用のメモリに展開はされる。
だけど電源オフったら消える通りストックはされておらん。
未保存データは再生実行時には使われておらん。
再生実行時に保存データを使ってEditor用のメモリに一旦展開する。これがデシリアライズな。
分かった? >>338
誰か再生実行時の話してましたっけ?プレハブを作る場面の話だったと思いますけど。
ヒエラル木とか言ってる人に合わせて、ヒエラルキー上にリストされているシーン上のオブジェクトの事を指して、またはオブジェクトの階層構造自体の事をヒエラルキーって言ってたのが悪かったかな。
ヒエラルキーのリストは確かにファイル。
んで、編集中にプレハブを作りました。そのプレハブをシーン上に配置しました。シーン上に配置した時点でオブジェクト化されたんじゃないかと思うのですが、このときはプレハブソースからのデシリアライズは起きないのですか? playerキャラとかNPCキャラとか複数のオブジェクトで使い回すような自作関数ってそれぞれにアタッチしてるスクリプトに書く?それとも1つ関数をまとめたオブジェクトを作ってそこに書いておいてその都度それぞれが参照する感じのほうがいいですか?
例えばオブジェクトの現在の座標とか着地判定を取得する関数とか >>339
インスタンス化とデシリアライズの話が出たから、そのタイミングである再生実行の話をしただけで、いきなり誰かしたかと言うのはおかしい話。
プレハブから配置したのは、あくまでEditor上でシーン情報を作っただけで、デシリアライズは再生の時に起きるっての分かる為なんだが
まあ、ちょっとデシリアライズを誤解してるってか、話がどんどん逸れそうだからな。行間読むわ
多分言いたいのは、プレハブをシーンに置いた時に、プレハブ情報からシーン情報が構築されないのか?って言いたいんだろう。
一旦Editorのメモリ上では構築される。
そんで、再生や保存で、その時に当然Dirtyな置かれたオブジェクトがファイルに保存される。
再生の初期にシーンファイルを読み込んで、デシリアライズしてメモリ展開する。
オブジェクト化は再生の初期やInstantiateの時に起こる。これをインスタンス化と呼ぶ。
じゃあ、エディタで見えてるのは何なの?って言うと、編集のためにファイルをエディタ用のメモリに展開してるだけ。
最初にプレハブを置く=テンプレートからのエディタ用メモリへのコピー
保存=シーン情報の構築
ヒエラルキー=再生時のメモリ構築用データ
と思えば良い。
まだダメかな?いい加減疲れてきたぞ。をい >>340
人それぞれかな。
俺の場合は、それぞれにアタッチしてる。だが種類は極小でなるべく余計な物はアタッチしないって方針
一個だけアタッチするなら、代表するオブジェクトに持たせたり、シングルトン使ってそいつにコンポーネント生やしたりもする。
シングルスレッドならUnirx辺りを使ってアタッチしないで生やしたりもできる。
それぞれ一長一短だから全部やってみるとええ。 >>340
良いか悪いか。
仕様に基づいて、一番最適な設計を行って実装するのがプログラマだから、察するに現時点の貴方のレベルからすると、342さんも言ってるように、とにかく実装経験を積むことが近道になると思う。 >>341
でもさ、公式のマニュアルに
https://docs.unity3d.com/ja/current/Manual/Prefabs.html
単に、プレハブアセットをプロジェクトビューからシーンビューにドラッグするだけで、プレハブのインスタンスを作成します。
プレハブのインスタンスとして作成されたオブジェクトは、ヒエラルキービューで青色の文字として表示されます(通常のオブジェクトは黒の文字で表示されます)。
て書いてあるのよ。
プレハブはシアライズされたファイルで、そのシリアライズされたファイルからインスタンスを作成するんだからデシアライズじゃないの?Unityではデシアライズとよばないの? >>344
呼び方とかどうでもいいのよ、動けば
議論したいなら他行くか、自分でスレ建ててそっちでやってね 弟子realize
↑
低能特有の神経質な悪臭が半端ないな
なんなんだこのゴミ >>347
そのゴミが建てたスレに来て何言ってんの >>334
とても勉強になる回答内容に感激しました。
私はその昔ながらのmain()ループのやり方で生きて来たクチなので
Unityのマニュアルやチュートリアルに目を通し(熟読はしていませんが、
非常に困惑しているところだったんです。
ステップアップ先生の話を聞いた限り、仮にUnityでFCマリオを制作するとしても、
昔ながらのmain()ループのやり方をUnityで実行するより、
本来はUnityモデルを覚えて作った方が"ラク"だよ、ということですよね?
例えば当たり判定〜のくだりは確かにそっちの方が確実にラクなのが理解できますし。
それとも「いや、FCマリオくらいのゲームしか作る気ないなら、
この先Unityを覚えて制作せずとも、>>333のUnityの中で擬似main()ループで作る方が断然ラクだよ」とかですか?
というのもmain()ループのやり方が染み付いてしまっている私自体、
ゲームの処理には中心となるがループを置いて、
そこからすべての流れを構想してしまうオツムなんです。
Unityモデルは全オブジェクトが個々で処理され、バラバラに存在している感じ?というか
各オブジェクトや処理に非常にふあふあしていると感じました。
もちろん自分のUnity理解度がまだ足りないせいなのは重々承知してますが
アセットやツールで解決するそれぞれの処理がブラックボックスすぎて、
初心者としてはそれらの応用が難しい。
アニメーション描画も、正直配列に各画像を入れ込んでフレームで回す方がラクなのに、
AnimationEventを使ってメモリを動かしてイベントの制作をしなければならない?のも余計ややこしく感じます。
結局、ソースだけで解決できないエンジンなので例えFCマリオであっても
Unityを覚えないと作れないことにちょっと面食らっています。
それらもステップアップ先生のおっしゃる通り
3Dや中〜大規模のゲーム作成も想定されたUnityだからこその仕様なのだと理解しましたが
どうなんでしょうか、私が2Dオンリーのゲーム制作目的であっても
Unityモデルで制作方法を覚えた方があとあと必ずラクになりますか?
変な相談ですみません。 自分のやり方でやってみれば
unityでも十分できると思うよ
一元管理のほうがコード書きやすいし
チュートリアルみたいなコードは手練れてないと無理じゃね >>349
mainループ式は、シングルスレッドとかシングルタスク的な動きを連想させるけど
Unity式は、マルチスレッドとかマルチタスクとか非同期的みたいな動きだから慣れていないと取っつきにくいだろうね。
どちらかというと、Webのサーバークライアントプログラムの扱いに似てるかもね。
これは慣れだよ。
最初は四苦八苦かもしれないけど
旧式でもゲームを作れる技量があるのなら、触っている内に必ず非同期的な作りにも慣れる。
慣れるとメリットの多さに気づける。
Unity式のやり方を覚えた方が絶対に得だよ。
作れる物の幅も広がるしステップアップに繋がる。
そしてソースが非常に簡略化する時が多い。
例えば動きを実現するのにmainループ型では30行必要だった処理が1行で済むなんてこともあるよ。
最初から全てをUnity式のやり方にする必要はなくて
慣れてるmainループ式で作り、Unity式にしたほうが便利そうな部分だけそっちにする感じでいいんじゃないかな?
実際のゲーム作りも、ほとんどが「main()ループ式 + Unity式のハイブリット型」になると思う。
main()ループ式だけとか、Unity式だけという作りにはならないと思うよ。
他の人はどうなのかは知らないけど自分の場合は必ずゲーム全体を管理するmainループ的なスクリプトが存在するよ。
mainループはゲーム全体の状態をコントロール(ゲーム中なのか?ゲームオーバーなのか?などの状態)したり、
ラジコンを動かすプロポ代わりとなり、各GameObjectに実装した関数へ「待機」とか「アクションAの動きを実行せよ」とか指示をだして操作してるようなイメージ。
各GameObjectには渡された引数で色々な動作をするように記述したC#スクリプトをアタッチさせておき、指示を受けて動くロボット的なイメージ。
人によっては"GameMain"に相当する部分を"GameMgr(ゲームマネージャー)"みたいな名称にしてるかもね。 >>346
俺には初心者がそれなりにマニュアル読みつつ、独自解釈のエラそうな知ったかを追い出そうとしてるように見えるけど? >>348
初心者スレなんていう公共的なスレタイ付けといて言うセリフじゃないぞ。個人的なスレにしたいならもっとスレタイ考えろ。
初心者スレはお前が立てなくてももっと普通の奴が立てるからでしゃばんな。 >>355
夏やなぁ
通常質問スレが36間でいっても初心者スレ建たなかったんだよなぁ ネトゲじゃないんだから雑談や初心者質問スレなんか需要無いんだよ。
次は復帰者スレでも建てるの? ヘックスマップ作りたいんだけど
こういうマップチップてプレハブ並べて作るの? >>352
昔ながらのゲーム制作方法を交えてアドバイスして頂けること
非常にわかりやすく助かります。ありがたいです。
そのため、どうしてもこの機会にアドバイスを受けたいのですが
シンプルに説明しますと、私のやってきたことは
ゲームマネージャーを作り、そこですべてを把握させ、
各オブジェクトは属性を振り、配列に入れ、属性同士でコリジョン判定。
真になった場合に相手を見てそれぞれの処理をする
(厳密には、プレイヤーなどは専用にコリジョン判定を回したり)。
各マップチップとの判定も同じで、ブロックごとに属性を振り配列に入れ込んで判定します。
シーン遷移についてもシーンマネージャーを作り、マネージャーより命令がくれば指定のシーンに飛ぶ、それだけです。
サウンドもシーン遷移の要領でサウンドマネージャーを作り、命令がくれば切り替える感じです(SEは各オブジェクト内で鳴らします)。
もちろんこれらはご存知かと思いますが、ソースは多かれどこんなシンプルなものでしたので
今はUnityの方が面倒に感じて、参っております。
理解度が低いのはもちろん、ご指摘を受け、全部Unityのやり方でやろうとしていたせいだと思いますし、
確認してみたチュートリアルが昔ながらの作成方法では無い説明ばかりなのも弊害のひとつですし、
あとネットで探す場合3Dの方の情報とこんがらがっているのも弊害といえます。
私の様な時代錯誤なゲーム制作者が、初Unityで試しにFCマリオみたいな
2Dアクションゲーム(もちろん簡単なレベルに落とします)を制作してみるとして、
どこの処理を「Unity式のハイブリット型」を選ぶのがベターなんでしょうか。
古きも新しきも理解し、両方の比較ができるステップアップ先生
どうか教えて頂けませんでしょうか。 オープンワールド的な大きなterrainにするために(見えるように)キャラとかオブジェクトのScaleを0.1にするとかお前ら的にはアリ?ナシ?
terrain分割系のアセット使うのは無しの方向で
terrain自体のサイズは実質2000x2000くらいが限界なんだよなぁ >>358
六角形のスプライト用意してタイルマップでいけるんじゃないかな >>358
アセットがあればヘックスマップも作れると思いますよ >>366
最新のUnityになってからかどうかわかりませんが
自分のUnity2018.2.2f1の環境だと、2D ObjectにHexagonal TileMap
というのがあって
こんな感じ
https://i.gyazo.com/b0fc26516bf806e40e323a15c1314ba0.png
https://i.gyazo.com/72ac988887f2427e0d21ed7f5348fd3b.png
ちょっと配置しただけなので隙間とかあるけど、調整すればいけるんじゃないかな >>359
説明を見てる限りだと結構Unity式で出来てるように感じるよ?
"属性"の部分を"レイヤー機能"に置き換えれそうなくらいじゃないかな。
既にレイヤー機能を使っているようなら気にしないでくださいな。
自分もUnity式はまだまだ発展途上であり完璧に理解してるわけではありませんよ。
またそれが面白いのです。
FCマリオを作るとしたら自分は以下をUnity式でやると思います
・当たり判定全般はUnityのコライダーとレイヤー機能に任せる(プレイヤー⇔マップ、プレイヤー⇔アイテム、プレイヤー⇔敵、敵⇔敵、敵⇔マップ)
・Sceneファイル1つにつき1ステージとファイルを分けて、ステージ遷移はSceneファイルの変更で行いたい
・Unityエディッタ上で直接マップ構成や敵の配置をやってしまい、別途BGエディッター見たいなものを使用しない
・つまりmainループ式だと行う必要があった背景などの画面スクロール処理は一切不要。カメラ移動に任せる。
これ以外はmainループ式でやるかな?
当たり判定部分は物理エンジンを使うか否かで多少変わってくるかもです。
実際に作ってみるとこのように行かない場面も多々出てくるかもしれませんが。
うまくまとめればUnityエディッタ=ちょっと複雑なマリオメーカー的な気分で作れちゃうかもしれませんね。 画像付きで解説優しい!
2018.2にアップデートしたらヘックスタイルマップが追加されました
物凄くタイミングが良かった
ありがとうございます! >>359
横からだが、俺自身も昔ながらのゲーム開発からUnity開発へ移行した口だけど、結局のところ昔ながらのことをしないとパフォーマンス稼げないことが多々出てくるから、どっちのやり方も知っていいとこ取りをするのがベストだと思っている
あとチュートリアルはお作法というより機能や出来ることの説明がメインだから、設計という意味ではあまり参考にならないかと >>368
ありがとうございます!
モチベーションが上がって来ました。
それを参考に私も頑張ってみます。
>>370
>機能や出来ることの説明がメインだから
そうなんですよ、Unityモデルでの昔ながらの作成方法な
設計の参考になるものが皆無なんで、困ってます。 シーンに空のオブジェクト置いてfixedupdateを
mainループとみなしてそこからすべて操作するだけ unityでそのままの方法でできるんだから悩む必要ないぞ
スクリプトをプレイヤーにつけるか敵につけるか空のオブジェクトにつけるかの違いだから
チュートリアルみたいに分散させるとどこに書いたかわからなくなって混乱の元になるし
一箇所に集めて配列管理でいいんじゃね エディタ拡張やってる人いますか?
inspectorに何かを表示したりそこにオブジェクトを生成するような簡単な処理はできるようになったんだけど、そこから先のやり方が全くわからない
例えば、既存のterrainの上部のボタンみたいなものを作って独自の機能を自作したりシーン上でクリック等の操作をできるようにしたりする方法教えてください >>374
スマホだとわかりにくいけど、目次からweb版(無料)が見られるよ。探せなければpcで。それだけできてるなら6.10、17.2あたり見ればヒントになると思うよ。 >>376
ありがとう
ボタン設置やハンドルの表示は分かるんだけど、例えばシーン上のどこかをクリックしたらその座標にオブジェクトを生成するとして、それだけなら出来るんだけど他のオブジェクトをクリックしたときに、そのオブジェクトを選択したことになってしまうんです
terrainで編集中だとシーン上で他のオブジェクトをクリックしたとしても、そのオブジェクトが選択されたりしないよね?
まずは、シーン上でオブジェクトをクリックしても選択しないようにしたい
単純に「シーン上でオブジェクトを選択不可にする方法」ってのはぐぐったら出てきたんだけど、スクリプト込の記事がないんだよね
あとは、例えばterrainならterrainDataいじってterrainの新しい機能を作りたいと思ってるんですけどね https://i.imgur.com/amXVxen.jpg
https://i.imgur.com/twb7p6A.jpg
https://i.imgur.com/sPHv2uG.jpg
https://i.imgur.com/PcvppLs.jpg
ど素人質問&画像直撮りですみません
マウスクリックでスプライトのアニメーションを変えるスクリプトらしいんですがイマイチよく分かりません
一番最初、「Animator」で記述すると「」がc#では使えないと出たり
その横のanimeDataが「フィールド'PlayerMove.animeData'は割り当てられません」と出ます
初歩的なことで申し訳ないのですが教えていただきたいです >>378
解説本はその解説本が対応しているバージョンのUnityで行いましょう >>378
一番最初というと
[SerializeField]「Animator」 animeData;
という部分ですね
恐らくで申し訳ないがこれは
animeDataというAnimator型の変数を定義していると思うので
[SerializeField]
Animator animeData;
でいいかと思います
その次のfloat定義も
float minPoint = -2; てなってますし。 >>372
すみません、空オブジェクトのUpdateでは無く、
FixedUpdateである方が良い理由を教えてください。 >>379
>>380
回答ありがとうございます
参考にしつつ手順の漏れがないか最初からやり直してみます [SerializeField]ってことはインスペクタでanimeDataを指定しないといけない
たぶんぴーたんをドラッグドロップするんだろう >>381
フレームレート60に設定するとfixedupdateは秒間60回呼ばれる
updateは何回呼ばれるか決まってない
昔のゲームプログラムはフレームレート固定だったので
昔風に書くならfixedupdateがおすすめ >>381
大体固定だからじゃない?でも多分両方必要だとおもうよ。 >>384
でも、描画フレームとは同期できないから使い勝手悪いぞ
素直にUpdate使う方が楽 >>384
もうひとつ付け加えると、FixedUpdateはスレッドで動いてるわけじゃないから、Update(描画フレーム)が処理落ちすると、1フレームに複数回呼ばれるし、その逆もまたしかりなので、結構めんどくさいよ >>381
Updateで昔ながらの60fpsをやるなら、まずコードのどこかでApplication.targetFrameRateに60を設定する
メニューからQuality SettingsのVSync CountをDon’t Syncにする
同じくメニューからTime ManagerのMaximum Allowed Timestepを1/60にする
これでほぼほぼUpdateが60fpsになるはず >>387 >>388
え、、、じゃあUpdateの方がいいんですかね
fixedupdateはPhysics(Physics2D)系以外を呼ぶなって書いてもありました。
>>389
じゃあUpdateの方がいいんですかね
どうすればいいのか頭が混乱してます。
とりあえず、作ってみないと、、
簡単なものから組み立ててみます。 unityでこれって正解はそうそうないからな
みんな自分がうまく行く方法を教えるから意見がぶつかり合う
んで一番割りを食うのはそれを見て学ぶ初心者ってことだなw 専門学校でゲームプログラムやってて、卒業後から最近まで業務システムやってたって人がいるんだけど、昔ゲームプログラムやった人はUnityは結構混乱するらしいな。
そのおっさんはゲームと思わない事がコツとか言ってる。
Unityでやるなら昔の事は忘れた方がいいみたいな気がするわ。 Unityがデフォで提供する可変フレームレートの仕組みのところで、そんなにやり方が分散するとは思えんな
https://docs.unity3d.com/Manual/ExecutionOrder.html
↑ここの下の方の流れ図を見てみ
FixUpdateはUpdateよりも実行される頻度が多い(FixUpdateの所で矢印がぐるぐる回っている)
Updateは描画(Rendering)前に呼ばれる
Updateには描画時のみに必要な処理を書く。つまり、描画コマ落ち時には呼ばなくても良い処理を書く。例えば条件に応じて色合いを変えたりとか。
Updateが固定フレームで呼ばれるようにするのは愚の骨頂だぜ
公式が何のためにわざわざUpdateを分離してくれたと思ってるんだw
>>392
上のWebページの図の流れは、FixedUpdateがフレーム当たり何回も呼ばれる所以外、昔からのゲームの流れそのものなんだが ×FixUpdate
○FixedUpdate
>< >>393
やだなぁ、そんなに上から目線で言わなくても、俺よりみんなの方が出来る人達なのはわかってるって。
昔ながらだと、メモリ配置どうなってんの?から始まるみたいだし。 393が言ってる通り、updateら辺はお決まりだべさ
updateの頻度に関してはupdateのが多い場合がある、ってか、60fps行ってたら、デフォのfixed updateより遥かに頻度は高い。
問題は用法で、 updateはベストエフォートで実施されるから時間が適当。
例えフレームレート固定にしても、結構適当で1秒辺り処理される回数も結構適当。
一方fixed updateはバチっと固定秒を監視してるから固定秒間隔で実施出来る。んで、一秒辺りに処理される回数は決まってる。
1秒辺り何回やっても良い事務処理は updateで。
1秒辺り変化して欲しい量の加算や力の積み上げに関する処理はfixed updateでやると正確な回数処理されるって所かな。まあ、addforceとpositionの加算はfixed updateでやっとけばok >>396
嘘教えるなって!
Updateの処理が重いとfixedUpdateは待たされるから固定秒間隔なんかで来ない
じゃあ、fixedUpdateがなんのためにあるかっていったら物理演算のためだよ
Unityに入ってる物理エンジンはある時点でのスナップショットで判定してるから経過時間が等間隔じゃないと正しく判定できないから擬似的にその状況を作ってくれてるだけ うおおおおおおおおおおおおおおおおお
、、、結局、誰の認識が正しいのですか!? >>397
俺ら初心者スレの猛者達がFixedUpdateを遅らせるような事する訳ないだろ。 >>398
固定フレームレートでやりたいなら、自分で時間見てやりなさい、ってとこかな。Unity公式で紹介されてたなんかの弾幕ゲーはそうやってたよ。 >>398
知識披露したいだけの奴らだから無視してればいい
バグがでて必要になったら覚えりゃいいだけ >>399
実際にUpdateが処理落ちしてるときにFixedUpdateが呼ばれる間隔を計測してみ
等間隔なんかで来てないから
あと余談だけど、昔のゲームはVシンクに同期して作ってるのが多いから処理落ちするとスローモーションみたいになるけど、FixedUpdateだとフレームスキップしたようになる >>398
手っ取り早く、>>389でいいよ。
他のやり方は、他の仕様との兼ね合いとか考慮する事もあるので。 >>398
習うより慣れろ精神で、まず作りましょ
んで何か不具合、またわからないことが出てきたら、具体的に聴けばいいかと 操作に対して移動を優先するか
遅くしてもグラフィックを描画するかはゲームの設計思想の問題
どっちが正解とかない この方の最新ツイート(8/8付)動画の40秒以降のぐるぐる回りながら形が戻っていく動き、どうやって作るんですか?
https://twitter.com/Makan_Gilani
https://twitter.com/5chan_nel (5ch newer account) >>406
パーティクルで、発生位置がメッシュかな。パーティクルはオブジェクトな。
透明なスキンメッシュのオブジェクトがアニメしてて、メッシュの頂点から発生させてるって所か。
最近だとvelocityに回転つけられるんで、それも合わせりゃいいかと >>406
Houdiniでも使ったんかと思ったがProcedural Animationsだけで作ったと書いてある
スクリプトでtransformの制御だけで作ったようだね
恐れ入るよw >>407
>>408
ありがとうございます、やれるだけやってみます。 Raycastについて質問です。
rayを飛ばして当たったオブジェクトの情報を取得することは出来たのですが、ヒットしない場合、指定したY座標に到達した時のXZ座標を取得するにはどうすればいいですか?
例として高い位置(動的)から斜め下にrayを飛ばしてYが0の地点のXとZを取得したいです。 >>410
さくっと考えてみた
d = レイの始点.y ÷ レイの向き.y
p = レイの始点 + レイの向き × -d
これで出来たりしないかな? でっかい地面、四角をおく。
レイと似たようなほっそ長ーい、オブジェクトを用意してそれをカメラの子供にして、z軸をレイと同じ方向で座標調整。
あとは、このオブジェと地面の交点をコリジョンのコンタクトポイントで取得すれば出来上がり。 3次元空間の方程式で解けるんじゃないかね
高校数学だな
覚えてないが まあ、もともとレイキャスト使ってるわけだし、素直に平べったいでかいボックスコライダー敷いて、それとの交点拾った方が楽かもね 現在地(X0,Y0,Z0) 直線の方向(l,m,n)
X=X0-l*Y0/m
Z=Z0-n*Y0/m
あってるかどうかは知らん 410ですありがとうございます
最初412のようなこと考えたんですが、とてつもなく大きくしないとヒットしない場合が出てくるのでやめて、タンジェント使って実現できました
ですが、逆にy0座標を入れた変数の方を基準として操作してもう1つの方も動くようにしましたごめんなさい スクリプトから生成したオブジェクトにアタッチしてるスクリプトのstart()内でtransform.positionに値を入れるのが効かなくて、update()内でやると効くというような現象が起たのでググったら1件バクという記事があったんですが、そんなバグありますか?
スクリプトの読み込み順は生成元を優先にしてます
解決法わかる方いましたらよろしくおねがいします 生成元のInstantiateの直後に生成元でそのオブジェクトのtransform.positionに入れると効くので上書きはしてないと思うんですよね
両方それぞれのメソッドでDebug.Log入れて見てみたんですけど、ファイル実行の優先順位を設定してても、その中のメソッドの処理のタイミングがバラバラで上手くいってない気がしました
がまだ解決はできてません バグという記事のurlよければください
再現できるか確認してみたいと思います 抽象的なこと書かれても誰もどうすることもできんぞ
自分で解決しろとしか Startの綴りが間違ってるとかそんなんだったら笑う 俺は親オブジェクト指定してなくてローカル座標のつもりがワールド座標になってたりその逆だったりならたまにある。 ・unityで、コンビニで買えるプリペイドで購入する方法ありますか?
・DynamicBone ですが、フリー版で似た機能を使えるプラグインとかありますか? 2000x2000とかの大きなterrainだと、遠くの山が描写されず、近づくと表示されて気持ち悪いんですが、描写される距離を設定で変えたりできますか?
木や草を描写する距離などはterrainの設定から出来るんですが、terrainそのものの描写する距離を変える設定が見つかりません テレインのインスペクターの、far、miniだったか?の値を変える。 テレインのインスペクターって、インスペクター上の歯車マーク(terrain settings)のところですよね?
そのfarがないんですよね
unityのバージョンは20182.2f1です 剣を振った時にプレイヤーの前にコライダを出して当たり判定をを作ったんだけど、剣をふってないときにコライダを引っ込めるスクリプトが分からない、誰か助けて 出せたなら、その反対をやればいいと思うけど、出したコ一ドはどんなコードですか? コライダーって出したり引っ込めたりするもんなのか? プレイヤーの前方に当たり判定のコライダとなるこのスクリプトをアタッチしてて
public class AttackController : MonoBehaviour {
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "Enemy")
{
Destroy(coll.gameObject);
Debug.Log("hit Object");
}
} プレイヤーコントローラーのスクリプトは下のスクリプトで右クリックでアタック時にSetActive
でコライダを表示するようにして敵を攻撃する当たり判定にしてるんだけど、一回攻撃するとコライダ出っぱなしになる
消すように色々ためしたけど上手くいかない、アドバイス頼みます
public GameObject AtariHantei;
void Update()
{
//アタック
if (Input.GetMouseButtonDown(1))
{
this.animator.SetTrigger("AttackTrigger"); //アニメ再生
audioSource.PlayOneShot(AttackSE, volumeSE); //AttackSE
AtariHantei.SetActive(true); //コライダon
} 詳しくはわからんけど根本的にやり方間違ってそうな気がするな >>440,441
とりあえず、そのスクリプトを生かしてコード書いてみました
現状ではコライダーをオフにするコードがないので、コライダーにぶつかった際にオフにするという通知をします
public class AttackController : MonoBehaviour
{
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "Enemy")
{
Destroy(coll.gameObject);
Debug.Log("hit Object");
transform.parent.SendMessage("SetOffAtariHantei");
}
}
で、プレイヤーには
void SetOffAtariHantei()
{
AtariHantei.SetActive(false); //コライダOff
}
を追加します
プレイヤーとあたり判定は親子関係にしました
https://i.gyazo.com/d55a5010816e8b2f99b0db403835c96e.png
https://i.gyazo.com/ae2fefe26576b05fecbc233346631b42.png
これで敵を2対置いて、ミギクリした場合としない場合で判定がちゃんとされます
https://imgur.com/a/HCi2D6J あぁテストする際、
void Start()
{
SetOffAtariHantei();
}
に入れて最初は通過、その後クリックで当たるとした方が分かりやすかったかもしれません>< なんで出っぱなしになって困ってる判定を敵にあたったら消すように改修すんの?
剣を振るアニメーション終わった後にとことこ敵の前に歩いていったら攻撃があたんの?
亜空間攻撃とはなかなか見ないゲームだな
どんなゲームかわからんけど普通は一定時間後にオフにすればいい
SetActive falseで消えることはわかってるだろうから一定時間後にその処理を呼ぶようにすればいい
一定時間後に処理を走らせる方法はいろいろあるからググって
わかんなかったらまた聞いて >>444
知らなければ答えなければいい
とか言って他人を煽るんだったら正しく答えてくれません?
なんで初心者が迷うような回答をいつもするんですか? >>441
アニメーションイベントを使うといいよ
具体的なメリットはアニメーションの好きなフレームでコライダーのオンオフできるところ
現状だと、例えば剣を振りかぶる動作の途中なのに敵がダメージ食らったりしてると思う
詳しくはウェブで!!
https://gametukurikata.com/basic/animationevent <<442
>>443
ありがとうございます
攻撃→コライダ出る→敵に当たる→コライダ消えるって感じなので、攻撃を空振りしたあとに
敵に当たるまでコライダ出っぱなしになるんだけど、これはどうすればいいの?
そもそもこの攻撃の当たり判定の仕方は根本的に間違ってるの?入門本三冊持ってるんだけど
どれにも攻撃の当たり判定は載ってなかったからネット検索してやってみたんだけども
アニメーションイベント使ってやった方がいいのだろうか?ちなみに本にはアニメーションイベントのやり方は載ってなくて
ググってみたけどよく分からなかった >>445
>>447
ありがとうございます、一定期間後の処理で出来るようになりました。
アニメーションイベントもわからないので調べて出来るようになろうと思う
void AtariKesu()
{
AtariHantei.SetActive(false);
}
void Update()
{
//アタック
if (Input.GetMouseButtonDown(1))
{
AtariHantei.SetActive(true); //コライダon
Invoke("AtariKesu", 0.3f);
} >>448
間違い。
@コライダー出す→コライダー消す
Aコライダーに当たる、
@Aの判定は別で処理すべき。
Aで当たった判定を@に渡して、途中で消す作りにすべき。 raycastのrayって判定がけっこう曖昧になったりすることありますか?
マウスが乗ってるとこのterrainの座標を取得するのは問題なく出来てるんですが、xz座標を指定して高い位置から真下に飛ばしてヒットしたy座標を取得しようとすると取得できたり出来なかったり違った値が入ったりするんですが
少し感じたのはinfinityにするとしても発射位置を少し高くすると反応しなくなったりしてます >>449
アニメーションEventは一回わかると結構簡単だ
public void AtariKesu()のスクリプトをつける
アニメーションのEventにAtariKesuを入れるとそのコマに来たら呼び出してくれる >>451
曖昧になったと感じたことはない。
私は、な。 >>449
はじめて自分でアニメーションまでつけてやってみた
結構めんどくさかった
剣にコライダーつけてisTrigerをオン・オフにするようにした
コライダーのisTrigerのチェック入れておく(オフの状態)
public Collider2D coll2;
void Start () {coll2=GetComponent<Collider2D>();}
public void collOn(){coll2.isTrigger=true;}
public void colOff(){coll2.isTrigger=false;}
void OnCollisionEnter2D(Collision2D col) {Destroy(col.gameObject);}
あとは剣のanimationで振り始めにEventをつけてcolOnを選んで
振り終わりにcolOffを選ぶ >>452
>>455
ありがとうございます
自分もそれで試してみようと思う 上達するにはチュートリアルやれとしか言われないのですが、
あの数をやり終えてる人はなかなかいないと思います。
興味あるチュートリアルをやっているのか、好きなゲームを作って学んでいるのか、
皆さんはどうやって上達、脱初心者をしたのですか。 聞いたところで何になる?
とにかく作る事。
作りたいものがあれば、それに必要なアルゴリズム、ロジックを構築する、その為にそこをしらべる。
これの繰り返し。 >>457
初心者スレでそれ聴かれても
自分はずっと初心者でいいかなと思ってますよ >>457
チュートリアルはroll a ballしかやらなかったな
その後は作りたいゲームの案から比較的簡単なやつを選んで作っていった
上達の秘訣はググり力だと思うよ
リファレンスを眺めて思いを馳せるのもいいかもしれない 敵がプレイヤーに向かってくるスクリプトはできたんだけど敵の進行方向にspriteを左右に反転させるコードがわかりません
分かる方いたらよろしくお願いします。
public class Chase : MonoBehaviour
{
public GameObject Player;
public float Speed;
void Update()
{
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
}
} void Update()
{
Vector3 prePosition = transform.position;
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
if(transform.position.x - prePosition.x >= 0){
transform.localScale.x = 1;
}else{
transform.localScale.x = -1;
}
}
こんな感じでどう?
2Dやったことないけどねw すまん横着した
こっちで
void Update()
{
Vector3 prePosition = transform.position;
this.transform.position = Vector2.MoveTowards(this.transform.position, new Vector2(Player.transform.position.x, Player.transform.position.y), Speed * Time.deltaTime);
Vector3 scale = transform.localScale;
if(transform.position.x - prePosition.x >= 0){
scall.x = 1;
}else{
scall.x = -1;
}
transform.localScale = scale;
} >>466
かなり当てずっぽうで書いたところはあるが…
まあできたのなら…
個人的にはscaleを1倍固定にしてるのが後々問題になりそうな気がするが
そのときはそのときで… あるアニメーション付きのアセットをいじって思ったのですが
歩くアニメーションクリップがありまして
ローカルの座標を歩いてます
そしてスクリプト上からも位置を更新して歩かせているのですが
そうしますと
アニメーションクリップの初めと後でローカル座標をいったり来たりして
グローバル座標の移動も加わって
引き戻されてワープするような歩き方になります
これはモデルだけ使ってこのクリップは使わないほうがいいのでしょうか >>467
いや助かりました、ありがとうございます
素人すぎてどういう問題がでるのか想像できないけど、今のところは大丈夫そうです >>468
その場で歩くモーションないの?もしくはそういうふうにアニメーションを修正できないの?
だとしたらそのアニメーション使うのを諦めるか、アニメーションの終わりを捕まえてそのタイミングで座標を更新するかじゃないかな
後者は相当シビアにやらないと瞬間移動しそうだけど >>470
ご回答ありがとうございます
3Dアニメーションってそういうものなのですね
わかりました
その場で歩くモーションにしてくれたほうが簡単でやりやすい気がしますけど
本格的なゲームを作ろうとする人には
歩き終わるフレームの位置を取得するほうが自然なんですかねえ >>471
いや、普通はその場で歩くモーションで作るよ
モーション終わりを捕まえるのは超苦肉の策だと思って
歩く速度が少し変わったらアニメーション全部修正なんてやってられんでしょ >>469
例えば、このモンスターは大きさ10倍だぁ!!
みたいなときにね、まあ、困れ
>>468
諦める前にAnimationの設定で
Root Transform Position(XZ)項目のBake Into Poseに
チェックが付いてるはずだから外してみてくれないかい?
https://imgur.com/8ToZoar.jpg >>473
ありがとうございます
たしかにclipのほうにはその設定があります
それをいじればたしかにその場で動かすことも可能になりそうですね
Based UponでCenter of Massにすることもできるのですね
しかしRigをHumanoidではなくRegacyでやっているため
アニメーションタブにはその設定は出ないようです
UNITY 逆引き 300の極意という本の
アセットでZombie (Zombie Draft)というフリーのものでやってるんですけど
まだ当方UNITYの3Dについてあまり勉強していないため
アニメーションの読み込みについてよくわかってないので
とりあえずどんなものか知ってみたくて質問しました
何かを作ってるわけではないので
動作の修正を完了できていませんが良しとします >>100
ちと、これは、、、って感じですよね。
If で係数算出だけって言うのが頭整理出来てないって言われちゃってんだよね。
普通はそこで値算出までもっていって最後にposition にぶつけますよね。そしたらdirなんて変数無くせますよ
BASIC と同じ構造化の考え方なんで、このブロックは何をしたいって意識して書いたら良いと思います。
この位のステップで混乱しちゃダメで、もうちょい頭を整理してから臨んで見よう〜 スキンメッシュのキャラクターの肌表面に汗や血を流させるようにしたくて
試行錯誤していますがうまく出来ません。何かやり方がないでしょうか?
Textureを動かすと部分的にはそれっぽい表現ができますが、元モデルのUVマップに
方向が依存するので今一つです。キャラクターの腕と足で流れる方向が違ったり。
液体系のアセットなども見てみましたが、あまりよくわからず、購入にも踏み切れません。
どなたかご教示くださいー http://baba-s.hatenablog.com/entry/2018/01/16/212800
こちらのサイトの通りC#のスクリプトをボールに反映させたのですが、再生ボタンを押してもボールが動きません…。
なんとか自力で調べようとしましたが僕の力不足で答えにたどり着けませんでした。
このような場合どうすればいいのでしょうか? スクリプト BallControllerの speedの値はちゃんと10になっているかい?
スクリプトの方じゃなくてインスペクタの方を確認しておくれよ >>481 なっていませんでした…。ありがとうございます。
そしたら今度は再生ボタンを押したら「All compiler errors~enter playmode.」の文字が出るようになってしまいました。
再起動しても同じです…
どうすればいいでしょうか? もう一つ上か下にエラーが出てるはず
それを教えてたもれ Assets/BallController.cs(17,0): error CS1525: Unexpected symbol `void'
これでよろしいでしょうか? スクリプトを弄ったな?
まあそれはいいんだけど恐らく
public float speed = 10;のセミコロンが抜けている; 確認しましたが抜けていませんでした…。スクリプトはコピペ以外は何も弄ってないです。 じゃあ括弧{}かもしれない
とにかく17行目の辺りをコピペ元とよく比べてみなさい 括弧の抜けもその他の抜けも見つからなかったです…。 void Start () { と書いてあります。
念のためスクリプトの画面を撮影した画像のリンク貼っておきます。
要領悪くて申し訳ないです。
https://imgur.com/iFAf5n2 なるほどw
赤の波線出てる方の void Start(){ }けしたまえ
{}もだぞ 赤線ついてる行のvoid Start(){ }全部ですか? 17〜19行全部だ
Startメソッドは二つもいらぬ 消しましたがまたあのエラーメッセージが出ました…
ちなみに消した後のスクリプトの画面です。これからバイトなので返信遅れると思います。申し訳ありません…
https://imgur.com/a/7smOTON おっと、見落としてたわ
14行目の}も消しなさいw void start(){}}
}がひとついらない 全部解決したら解説しようと思ってたのに…
まあいいや、困れ >>495動きました!!!ありがとうございます!!返信遅れて申し訳ありません!! 失礼します。
Input.GetKey(KeyCode.LeftAllow)
が押しっぱなしではなく離した瞬間のみtrueになるのですが
原因がわかる方いらっしゃいますでしょうか。
unityのバージョンは2018.2.3f1です。 離した瞬間にtrueになるって確認してるコードが間違ってんじゃないの >>500
実際に動作させるとそうなります。
Debug.Logで確認しても離した瞬間のみです。
使用している関数は間違いなくGetKeyであり、GetKeyUpではありません。
void Update(){
Debug.Log.("Update")
if( Input.GetKey(KeyCode.LeftAllow)){
Debug.Log("Left");
}
}
とすると、Updateは毎フレーム出ますがLeftは離した瞬間のみ出ます。 原因判明しました。
Virtual Joy StickというAssetのpluginがなにか影響していたようです。
Assetsから削除したところ通常の動作に戻りました。
ありがとうございました。 Android用のアプリを作っていて、
アプリを起動したときに、画像の一部を読みこんだ段階でアプリの画面が写るようにしたいと思い、
アセットバンドルを使おうとしているところです。
現在、Asset Bundle Browserを使って、複数のAssetBundleに画像を何枚かに分けて入れて、
AssetBundleをビルドし、StreamingAssetsフォルダに保存するところまでできました。
ローカルのStreamingAssetsフォルダから読み込む形です。
Androidでアプリを起動したときに、初めのAssetBundleの画像を読みこんだ段階で
アプリの画面が写るようにしたいと思っていますが、
AssetBundleを読み込むためのコード作りで躓いています。
http://tsubakit1.hateblo.jp/entry/2016/03/19/022019
このページ内の
「1.ABに8枚ずつ格納し、全てのスプライトを逐次ロードする(コード)」のところにある参考コード
https://gist.github.com/tsubaki/490c9576a61edaf7b87f
を参考にしてAndroid用のコード作っているのですが、
コードの訂正などをお願いします。
(続く) 1 using UnityEngine;
2 using System.Collections;
3 using UnityEngine.UI;
4
5 public class LoadAssetbundle : MonoBehaviour
6 {
7 IEnumerator Start ()
8 {
9 var image = GetComponent<Image> ();
10 var fileNames = new string[] { "ファイル名1", "ファイル名2", "ファイル名3" };
?この10行目には一つ目のアセットバンドル内のファイルを書けばよくて二つ目以降のアセットバンドルに関しては省略でいいのでしょうか?
11 var assetbundleNames = new string[] { "/アセットバンドル名1", "/アセットバンドル名2", "/アセットバンドル名3" };
12
13 yield return new WaitWhile (() => Input.GetMouseButtonDown (0) == false);
14
15 float time = Time.realtimeSinceStartup;
16
17 // AssetBundle内のスプライトを逐次読込
18 foreach (var assetbundlename in assetbundleNames) {
19 var assetbundle = AssetBundle.LoadFromFile (Application.streamingAssetsPath + assetbundlename );
20
21 foreach (var file in fileNames) {
22 var asset = assetbundle.LoadAsset<Sprite> (file);
23 image.sprite = asset;
24 }
25 assetbundle.Unload (false);
26 }
27
28 Debug.Log (Time.realtimeSinceStartup - time);
29 }
30 }
よろしくお願いします。 ゲーム画面のピクセル単位で座標から色を取得する方法を教えてくれ ゲーム画面のピクセル単位で座標から色を取得する方法を教えてくれ 拡張メソッドは専用のスクリプト作って書けばいいんですよね?それとも何か保存用の機能とかあったりするんですかね? >>509
ありがとうございます!これをヒントにもう少し自力で勉強してみますね
では失礼しました 半年以上2ch離れてたからわからないけど、俺のこと指してるのかな
事業安定してきて宣伝する意味が薄れたから、今はないよ
Twitterは前スレにあったんじゃないの。粘着に絡まれてるし、
俺からは言わない >>504
アセットバンドルもコルーチンもよくわからないけど
ぱっと見、画像を表示するループの前に中断処理を入れているように見える
試しに13行目 yield return 〜
を23行目 image.sprite = asset;の下に入れてみたらどうだい?
見当違いだったらごめんよ public float interval = 0.1f;
void OnTriggerEnter2D(Collider2D coll) //当たり判定
{
if (coll.gameObject.tag == "fire") //fireの当たり判定
{
StartCoroutine("Blink");
}
}
//点滅
public IEnumerator Blink()
{
while (true)
{
var renderComponent = GetComponent<Renderer>();
renderComponent.enabled = !renderComponent.enabled;
yield return new WaitForSeconds(interval);
}
}
攻撃貰った数秒だけ点滅させたいんですけど、うまくいきません。
分かる方いたらよろしくお願いします。 どううまく行かないのかくらい書こうか
数秒って仕様に対してwhile(true)はおかしくない? 当たり判定後にずっと点滅になるのを指定した時間だけ点滅するようにしたいです while(true)を
for(float i = 0; i < 指定秒; i += interval)
とかに書き換えればええんでないの >>513
ありがとうございます。
試してみましたがあまり変わりませんでした。
他のところが間違ってるのかもしれないです。
どなたか複数のアセットバンドルの内、一つを読み込んだ段階で
画面を表示させるためのコードがわかるかたいたら教えてください。 ためしてみました、2回に1回くらい消えたままになります >>517秒数変えたら大丈夫でした
ありがとうございました! 今2dで見下ろし型のゲームを作ろうとしていて、移動した方向にプレイヤーが向くスクリプトを書いているのですが、
void update()
{
input(); //入力
}
void fixedupdate()
{
move(); //古座標取得、移動
rot(); //回転
}
という風にやっているのですが、移動は出来ても回転しません
ログで座標を取って見ると古座標と現座標が同じになっていました
fixedupdateやupdate内では座標情報は変化しないのでしょうか 拡張メソッドで
public static void LookAt2D(vector3 transform_position,vector3 moveway,vector3 target_position)
{
vector3 rotvectol=(target_position−transform_position).momalized;
Quateinion FromToRotation(vector3 moveway,rotvectol);
}
でプレイヤーの後ろ側を古座標に向けるように
LookAt2D(transform.position,vector3.down,old_playerpos);
としています ちゃんとtransform.translateで動かす前に古座標を取得しています 一応、参考までに
ttp://tsubakit1.hateblo.jp/entry/2014/08/02/030919
ここの真ん中あたりにFromToRotationのサンプルあるので
まず、それを単体(例えば何かのキー押したら動く)ようにして確認してみるのはどうでしょうか
自分サンプル作ったら特に問題なかったです
それから、コードですがコピペだとしたらスペルミスがあるのですが・・・ X それを単体(例えば何かのキー押したら動く)ようにして
○ それを単体、例えば何かのキー押したら動くようにして
()がつく場合は()が無い場合に日本語が通じるように書くこと。人に教える前に日本語勉強しろ オブジェクトの位置をインスペクター初期に設定した位置に戻すのって
初期にオブジェクト位置を取得しておいて
戻したい時にその取得値をぶっこむしかいないですか?
なんか簡単にインスぺの初期値を取得するのってないんですか?
例えるならこんな感じのです
transform.localPosition = Vector3.inspecterReset
または
transform.localPosition = new Vector3(インスぺ初期値, インスぺ初期値, インスぺ初期値) オブジェクトが50個になるので、全部記録させるの手間だなと思って
ストラクトの変数でどこかに保管されてるのかなと思ったのですが、なさそうですね startで初期値を保存しとくscript作って貼ればいいんじゃない? ガチ初心者ですが、今おすすめの書籍ってなんですかね? 2018.2対応だと猫が書いてあるのとひよこのやつがヒットしたんですが
今のところやってみたいのはちょっとした2Dパズルゲームの作成→艦これもどき(どちらかというと改みたいな落としきりの方向。ブラゲやスマゲ化はまだ敷居が高そうなので目指さない)なんですが >>532
本屋で中身軽く見て良さそうなやつ
そもそもどうしても書籍じゃなきゃヤダってわけじゃないならgoogleをおすすめする >>533
某サイトで金はらって本読んで勉強しろって煽られまして…
あとちょっとでとあるサイト(上のとは別)のお題が完遂できそうなんですが、バージョン違いによる項目の違いで難儀しています… 誤解されないように書いておくと533の質問はここでしかしてないです 連投すみません。535は533の質問ではなく532の質問でした。
マルチでもいいよとおっしゃっていただけるのでしたら534についてここで伺ってみたいのですが スクリプトで他のオブジェクトにセットしてあるスクリプトのメソッドを呼び出したいんだけど、ネットで調べたけどエラーになってできないんだけど
どういう風に書けばいいのか教えて OnTriggerEnter2Dで敵と剣がヒットした位置にエフェクトを出したいのですが良い方法はないでしょうか?
調べてみるとGetContactする方法がでてくるのですがどうやらOnCollisionEnter2Dのほうじゃないと取れないようでisTriggerをオフにしろとか回答されてたりするけどそれじゃ剣コリジョンで押したりできるようになっちゃうし。
いまは剣と敵の中間位置に適当に出してるんですが剣も敵も長いのですごい変で萎えます >>537
OtherComponent otherCmp = otherObj.GetComponent<OtherComponent>();
if( otherCmp ){
otherCmp.myfunc();
}
これでどうだ 532ですが、結局ヒヨコ本に手を出してみました
書店が近くにないのでレビューが頼りの博打ですが
グーグルで調べるのだと結局本のおすすめばっかりヒットするんです… というか書籍なぞるなら過去の落としてver合わせるのが普通だぞ
最新verの仕様理解するだけならgoogle先生やら講演資料漁る方が早い >>537
昔やった事あるので、知識スレに簡単にまとめてあるので参考にどうぞ
ttps://mevius.5ch.net/test/read.cgi/gamedev/1511784235/32 Google先生に「Unity 2018 初心者」「Unity 2018 入門」などを聞いても侍何とかぐらいしか2018の実践形式をやってなかったです(古いバージョンのならブロック崩しとSTGのが出てきました)。ほかは本の紹介ばかりでした
侍なんとかは操作方法についての説明がなくて意味不明だったのでやむなく本を買いました Unity2018入門 最新開発環境による簡単3D&2Dゲーム制作 というやつです。 とはいえ、これでも実行結果が参考図と食い違っていて困っているのですが(作中使用されてるバージョンが書いてないんですよね…今年8月発売したものらしいのでバージョンは古くないはずなんですが) もしよろしければ、この問題に回答いただけないでしょうか。
(図1)
https://i.imgur.com/TXAqky2.png
これが上述の教本の指示なのですが
(図2)
https://i.imgur.com/mmMcZZu.png
なぜか指定通りに入力してもこうなってしまって困り果てています。なにがいけないのでしょうか? バージョンが書いてないのは酷いな。
Unityは過去のバージョンがダウンロード出来るから、
バージョンが分かれば古くてもそれに合わせてダウンロードして使えるのに いちおうそれらしい情報がどこかにないと探して、インストール説明のページに情報がありました
https://i.imgur.com/cqC8kXY.png
2018.2.0f2らしいですね。当方2018.2.8f1を入れてますが、Hubには2.0f2がないです 誤植じゃない?と言おうとしたが
スケールの値が打ち間違ってますぞ
1 10 1
10 1 1 ありがとうございます! こんな初歩的なミスだったとは失敬しましたorz public class Spherr : MonoBehaviour {
GameObject cube;
// Use this for initialization
void Start () {
cube = GameObject.Find("Cube");
}
// Update is called once per frame
void Update () {
Cube ref = cube.GetComponent<Cube>();
}
}
public class Cube : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void aaa()
{
}
}
こう書いたけどaaaがSpherr でやっぱ呼び出せない ゲーム内容的にバージョンに影響されるようなこと書いてないと思う >>552
ありがとうございます!
スケールの部分ですよね >>557
出来た、public付けてないでそのまま書いてたのが原因だったわ他にも呼び出し方の理屈がよくわかったわ、ありがとう public Imageで書くとインスペクター上からImageをアタッチできるようになりますが、
同じようにAnimatorControllerもアタッチする方法はありますか?AnimatorControllerを別のものに切り替えたいのですが、、 >>560
あるよ
Imageと同じように
public RuntimeAnimatorController て書いてみなよ unity初心者なのですが、頭にオブジェクト@をつけて、床に置いてあるオブジェクトA
を頭を振って動かすということをoculos riftでやりたいのですが、
どうすればriftで頭を振ったときにオブジェクト@が一緒についてくるのでしょうか? >>562
もうちょっと基礎を覚えてください。
少なくともカーソルで3d前後左右移動ができる程度。
カメラの子供にする。 >>563
oculus touchで移動をし、岩や壁などを頭を左右に振って壊すということをしたいです
説明下手と理解力がないので質問の返答がこれで合ってるといいです... >>561
ありがとうございます!無事実装できました <<565
たぶんできたと思います、ありがとうございました アプリがちょこちょこできてきたから端末で検証したいんだけど、
現状Windowsとiphoneという最悪の組み合わせだから
Android買おうと思うんだが10年くらいiphoneユーザだから
Androidの知識が全くない
オススメの検証用端末とかある?
家のwifi使えるから端末だけ買おうかと思ってるんだが
希望は1万円以下
できれば5000円以内でそこそこテストできるようなものを教えてほしい
docomoショップで聞いても安いやつないみたいでイマイチだった
SXGAとかWSVGAとかのシェアも知りたい
どの画面向けにコンパイルすればいいのか
親切な方お願いします >>568
そこそこはわからんが、安く買うなら中古で購入先はハードオフとかだろうね。
クソ安いsimで。 >>569
回答サンクス
Simってwifiあったらいらないのでは?
kwskおねしゃす そだね。
最終段階で、ツレとかのアンドロイドでキャリア回線チェックならwifiのみでいいかね。
それで問題出てからsim検討か。 今日3000円ほどでandroid買ってきて早速問題がでました
自宅のwifiのSSIDが見つからない
ググったらSim無しだと見えないチャネルが存在するとのこと
9チャネル以下じゃないとSSIDが見えないとか
自分ちのwifiはどうやら13チャネルでした
で、チャネル変更したいが、無銭LAN付属のソフトが行方不明でできず
なので格安Simに申し込もうと思うんですが、
オススメの業者?ありますか?
そもそも格安SIMってどこに行ったら契約できるのか
店舗型のところを地元で探せばいいんですかねぇ >>572
アセットを買うといいんですよ
ああ、こういう時に使うのか >>572
クレカもってりゃネットで契約
マツコ ocn出でも検索すりゃいい >>575
サンクス
ネットで契約してSIMカード待ってりゃいいんかな
格安SIMなんてものの存在初めて知ったからスレチな質問しちゃってすまんね
以後注意します 待ってりゃ送ってくるし
先にコンビニで買ってから契約してもいける
どちらでも好きなように なるほど
親切にありがとうございます
6ヶ月400円のやつにしようかな、まぁSim登録についてはスレチみたいなのでこの辺にしておきます
というかビルドしてandroid に転送して実機検証するだけならそもそもネット環境いらないんですかね
どのタイミングでネット環境が必要になるんだろう
グーグルストアへの登録時点?
どなたか詳しいお方はいませぬか? >>578
実機でテストする分には要らないよ
Google Playへの登録もPCで完結するし >>579
なるほど
では特にネット環境必要ないんですかね
どこかのサイトを見た際にwifiがあれば十分、みたいな記載があったのでいるのかと思ってましたが
android のネット環境があれば役立つことってなにかありますか? >>581
オンライン機能入れたら当然必要になるだろうけど…
ランキングとかね
あとは広告入れてちゃんと表示されるか確認とか
いざ必要になったらiphoneでテザリングしちゃえばどうだい? >>582
なるほど
納得の説明ありがとうございます
では今作ってるテスト用のローカルアプリには全然必要ないですね
課金システム導入した本チャンのアプリ作成時には必要になりそうですが
wifiはチャンネルにもよるみたいですが、今のところ掴めてないですね〜
まぁいざリリースするとなったら格安Sim入ろうと思います
ありがとうございました https://imgur.com/a/mkOMeqe
https://imgur.com/a/kPLOggq
https://imgur.com/a/23RzG1b
https://imgur.com/a/IZ20cmw
ビルド&ランに失敗します
スマホ側はUSBデバッグ選択済
PC側はUSBドライバインストール済で、ファイル転送モード変えてみたりと
色々やってみたんですが、どうにもうまくいきません。
で、コンソール見てみた結果、
20:27:59のエラーの、スマホのミニマムAPIレベルが15で、プロジェクトのAPIのミニマムレベルが16っていうのがおそらく
原因だと思うんですが、
project settings →player → other settings のミニマムレベルのプルダウンメニューがあるんですが、
16までしか選択できないんですよね・・・。
これはUnityの仕様なんでしょうか。
AndroidStudio側ではSDKマネージャでAPILevel9までインストール済です。買ってきたアンドロイドがandroid2.3で、
APILevelが9までインストールすれば十分かと判断したんですが、
Unity側では16まででしかビルドできないんですかね
となるとスマホ新しいやつ買ってこないといけないでしょうか・・・・。
iphone向けにmacも買いたいんで出費がかさむのは辛いところなのですが・・・・ 買ってこないとだめだな
それとiOS版は特にビルドからストアに載せるまでに躓く所が多いからね
できるだけ早い段階でMacを買ってきて、なんでも良いから1個ストアに載せるところまでやってみたほうが良いよ
ゲームが出来上がってからストアに載せるのに大規模修繕が必要だと分かったら悲惨だぜ ですよね、アドバイスありがとうございます
とりあえず新しめのAndroidは早めに買ってきます
Macは何買ったら良いでしょうか
Boot CampってやつでMac上でWindows起動できるようなんですが、
それだとメモリ食うみたいでMacBookProが良いと書かれていますが
いかんせん高すぎる・・・・。。。
WindowsじゃないとUnityForVisualStudioって使えないですかね?
MonoDevelopってのはもうサポート終了したんでしょうか。
コード補完考えるとVisualStudioのエディタ使いたいのですが
やっぱりそうなるとMacBookProでWindows載せないといけないんでしょうか。
もしくはVisualStudioForMacっていうのがUnityにも対応してるんですかね
もしそうならBootCamp必要ないでしょうか
あと、今Windowsで作成中の僕のゲームってMacに
持っていけるんですかね
プロジェクトファイルとかプロジェクト構成ごとMacに移して
Macの方でプロジェクト立ち上げることってできるんでしょうか。
OS違ったらWindowsのソフトって基本Macで動かないですよね?
となるとMacでまたUnity入れて同じソフト一から作らないといけないんでしょうか。
質問ラッシュですみません
ビルド通すだけでここまで難しいとは・・・・ >>587
まるまるパッケージにしちゃえば大丈夫じゃね? ついにビルドに成功しました
感動です、回答くれた人ありがとでした
ところで肝心の実機検証なんですが、
一回クリアしちゃうと最初の画面に戻れません
これって最初からやるには毎回ビルド&ランするしかないんでしょうか
毎回ビルドするとすごく時間かかるのですが・・・
もしくはシーンの遷移みたいなの用意しておくしかないんですかねぇ・・・・ そりゃループするように作ってなけりゃ、最初には戻らんよね。
タイトル画面
↓
スタート画面
↓
ゲーム画面
↓
ゲームオーバー
↑タイトル画面へ >>591
まだシーンの遷移作ったことないんですよねぇ
まだ1シーンだけのミニアプリです
フリップで一旦アプリ消して立ち上げなおしたら最初からいけました
感動です
Unity上でだけ動いてたものがスマホの加速度センサーで動いています
まだサウンドもエフェクトもスタート画面もないんでこれからが大変ですが・・・
グーグルストアにリリースまでいったらMac買います!!! 日本のゲームは本当に終わってんな
話題になるのは中国や韓国のゲームばかり
もう経済だけじゃなく文化でも遅れをとるようになっちゃってんだな
マジでジャップはオワコン
衰退途上国家ジャップランドだ フリー版でマリオ3みたいな2D横スクロールアクションゲーム作れますか? 皆さんはもうゲームでの収益得てます?
だいたいどのくらい稼げてますか?
個人開発やってる人とかこのスレにいるのかな
みんな仕事でUnityやってるだけですか? 収益得てる奴なんてごく少数じゃね
むしろ出費してる奴ならよく見るけど
アセットとか登録料とかで unityの当たり判定ってpositionの位置を直接変更しても発生するんですよね?
別にvelocityとかaddforceとか使わなくてもできるんですよね? >>601
アプリ何個くらいでどのくらいのダウンロード数?
kwsk聞きたい 月100円か?
まさか100万円じゃないだろうね?
時給1000円以上の稼ぎは時間給で換算すんなよw
そこから先は成果主義、つまりダメな仕事はどんだけやっても0円。 すみません
ものすごい初歩的な質問よろしいでしょうか?
床と壁を作ってキューブを前後左右に動かせるようにしたのですが
壁をすり抜けてしまいます
コライダやrigidbodyは付けています
移動は座標の値を増減させています
ノートPCなのですが、スペックの問題などもあるのでしょうか?
以前はデスクトップで少しやっていたのですが、ここでつまづいた記憶がないもので… >>608
Rigidbodyが付いてるならRigidbodyの関数で動かした方がよい
この場合だとRigidbody.MovePositionがいいんじゃないかな
このサイトが詳しく書いてある
壁をすり抜ける理由も真ん中以降で説明されている
http://yowabi.blogspot.com/2017/12/unity-positionmoveposition-rigidbody.html ライター募集増えたけど単価とか時間ひどくねUnity >>609
レスありがとうございます
Rigidbody.MovePositionで無事壁で止まるようになりました
教えていただいたサイトとても勉強になります
助かりました! anima2dを使っているのですがik rimbを付けた所先端に付かず根本の部分についてしまいました 位置を調整する方法などあったら教えて下さい
画像サイズが大きすぎてあげられなかったので解像度落としてます 見にくくてすいません
一枚目が非アクティブ
二枚目は親子関係など
三枚目はアクティブ状態
です
https://i.imgur.com/7uA3qSI.jpg
https://i.imgur.com/ZaL7wOL.jpg
https://i.imgur.com/YOGt8Bn.jpg ▼playerbody
▼playerarm1
playerarm2
▼playerarm1 bone
playerarm2 bone
となっています インポートしたモデルのマテリアルはグレーアウトしていて編集できないのですが、3dビューにドラッグしたものは編集できる
これはどういう仕組みなんでしょうか? 解決しました 単にスクリプトからikを追加していただけでした お世話になっております。
光源無視、アルファ設定、UVスクロール出来るシェーダーが作りたく下記のように設定しました。
色んなサイトのコピペですが。。。
これに Cull off を設定したいのですが、どのように記入すればよいでしょうか。
初心者ゆえ、お知恵をお貸しください。
Properties{
_MainTex("Flow Tex" , 2D) = "white" {}
_Flow("Flow Speed", Float) = 1
_Brightness("Brightness", Float) = 1 }
SubShader{
Tags{
"Queue" = "Transparent"
"RenderType" = "Transparent" }
CGPROGRAM
#pragma surface surf Standard alpha
sampler2D _MainTex;
half _Flow;
half _Brightness;
struct Input {
float2 uv_MainTex; };
void surf(Input IN, inout SurfaceOutputStandard o) {
fixed flowTex = tex2D(_MainTex, IN.uv_MainTex + half2(0, _Time.x * _Flow)).r;
o.Emission = flowTex * _Brightness;
o.Albedo = fixed3(0, 0, 0);
o.Alpha = 0;
o.Metallic = 0;
o.Smoothness = 0; }
ENDCG }
Fallback "Transparent/Diffuse" Tags{
"Queue" = "Transparent"
"RenderType" = "Transparent" }
の下に
Cull off
ていr手みたらどうだい? >>617
615です。
アドバイスありがとうございます。
Tags{
"Queue" = "Transparent"
"RenderType" = "Transparent" }
Cull off
だと私も試してみたのですが、エラーになってしまいます。 すみません、どなたか教えて頂けないでしょうか。
公式の2D UFO Tutorial でメインカメラをプレイヤーの子にすることでカメラを追随させるのですが、
同じ手順でカメラを子にするとgameプレビューにスプライトが映らなくなり背景色のみ映る状態になってしまいます。
その後ctrl+zでカメラを元に戻しても直らず映らないままになってしまいます。
http://bbs8-imgs.fc2.com//bbs/img/_760500/760479/full/760479_1539424861.jpg よくわかってませんが自己解決しました
カメラのInspector>Clipping Planed>Near の値をマイナス値にしたらgameプレビューに写りました。
3Dモードで見た所、どうやらカメラが映るエリアの範囲外になっていたのをマイナス値にして届くようになったみたいです
なぜ範囲外になったのかよくわかりませんが先に進めそうです unityは素人のツールwwwwって
40台おっさんプログラマーにバカにされたんだけど、そいつが雑魚なんですよね? それは本当にバカにされたと言えますか?
安価で優れたタンパク源である豆も「貧者の肉」と呼ばれることがあります
確かにUnityは人気で優れたツールですから、嫉妬する人もいるでしょう
しかしあなた自身をUnityと同一視してはいけません
自らも雑魚の1人なのだと言う謙虚な心で精進しましょう 本人は会心の笑みでレスしてんだろうけど
最高にクソつまらんからな
そういうとこだぞ >>624
うっせえ死ねばーか!そういうとこってどういうとこだよ!??w
バーカバーカバーカwアホみたいなレスしてんなw
こいつ雑魚じゃね?www そういうとこ
そう言うこと
↑ガイジ御用達ワードw表現力ざっこw 合わせて程度落としてもこのオウム返ししかしない無気力っぷり
構ってほしくたまらなくて絡んでくるくせに後が続かないんだもんなあ
コミュ障しかいないから困るよ
本当にもういいってんならもう構いませーん >>629
ストリートファイターや聖剣伝説。
その他コンソールでも採用されてるよ? あなたがUnityで制作した代表作を教えてください
これで、ほとんどの人は黙る
もしくは発狂する 「ほとんどの人」というのは世界中の人に聞いたんですか? >>632
あなたがUnityで制作した代表作を教えてください
無ければ他のツールでも結構ですので教えてください 回答の根拠となる製作経験は大事かと思います
初心者相手だからといって適当なスレ運営はダメですよ 私たち日本人の、日本国憲法を改正しましょう。
総ム省の、『憲法改正國民投票法』、でググって
みてください。拡散も含め、お願い致します。 GTX1080の環境でノートPCのインテルの馬力がないiGPUより重く感じます
CPUによるソフトウェアレンダリングになってるような感じがするのですが、それをGPUレンダにする設定はありますか? メニューのeditからグラフィックエミュレーションの設定かな?
俺の環境だと、スマホでUSBテザリング繋ぐと、fpsが数フレームとかになるから。
イーサネット周りもチェックしたほうがいい。
VMの仮想イーサでも症状が起こるって、海外のフォーラムでも見かけたよ。 これ多分Unityのバグだろうけど。
イーサ接続が複数あると、要らん通信でバク遅になるっぽい。
unity laggy 2018で出てくる。 質問です
Windows用のゲームを作っています
配布時の注意というかビルドするといろんなファイルが出来ますかそれら全て配布して良いのでしょうか
exeとdataフォルダ以外にもUnityPlayer.dllとか >>645
自己解決しました
フリームにアップされてるゲームを見たら
ビルドで生成されたファイルやフォルダとにかく全部配布しちゃってますね 3D格ゲー作りたいんだが何から作っていけば良いのかがわからんです。
とりあえず作るのに必要なものって
・キャラクター2体(モデル用意済み)
・HPバー/必殺技ゲージ(リソース作成済み)
・ステージ
・カメラ
くらい?他なんかあります?
あとこれから作ってみれば?みたいなのあると嬉しいです(キャラクターの動きからとか) 質問です、3D格ゲーを作りたいんですけど、何から作っていけばいいかわかりません。
とりあえず作るのに必要なものは
キャラクター
HPバー 必殺技ゲージ
カメラ
ステージ
だと思ってるんですが他になにかありますか?
キャラクターモデル リソース等は用意してあります。
とりあえずHPゲージとかUIの配置はしてみたんですが次にどこから手をつけていいかがわかりません… モーション、攻撃判定、くらい判定が無いと
キャラクター2人が棒立ちしてるだけになるな
あと、コード関連、サウンド関連と、エフェクト関連が一切書かれてないけど まずは入力で動作するまでつくる。
かんたんなとこだと、パンチ、キック、ジャンプ。
次は、対戦なのかCPU戦か。多分に対人戦だろうけど。相手が動くルーチン、前後歩きだけでいい、つくる。
そんで、次は当たり判定の処理。 >>650
ありがとう、確かにモデル用意しただけだから棒立ちになってしまうな。
とりあえずプレイができる状態にするのが目標だからエフェクトとかはプレイ出来る状態になってから考えようと思ってる。
攻撃判定とかくらい判定とかはコード書いた方がいい?
Unityの機能(ColliderとかRigidbodyとか)使う方がいい? >>651
ありがとう、攻撃とかモーションとかステージもシーン遷移も作らないと…ってごちゃごちゃになってどれから手をつけていいかも分からなくなってた、簡単なのから作ってみる アホな質問ですみません
UNITY HUBでの複数バージョンインストールは
どのようにフォルダ分けしてますか?
HUBのほうで
editorのフォルダを指定しろと出たので
C:\Program Files\Unity\Editorを指定したのですが
この中にさらに
C:\Program Files\Unity\Editor\5.6.6f2\Editor
C:\Program Files\Unity\Editor\2017.1.5f1\Editor
みたいな感じで
変な入れ子になってしまって
冗長なのですけど
これってなにかやり方を間違ってるでしょうか 追記です
今度はアホではない質問だと思います
UNITY4.7.2を入れたいのですが
UNITY HUBで上記のフォルダしか認識しない状態ですから
program filesのUNITYフォルダに入れたいところですけど
4.7.2は32bitだったので
program files(x86)に標準で入るらしく
(x86)に入るものをむりやりprogram filesに入れるとレジストリで
HKEY_LOCAL_MACHINE\SOFTWARE\に書き込まれる情報が
HKEY_LOCAL_MACHINE\Software\WOW6432Nodeの下に書き込まれる
とわかりました
これって何か開発上問題が出るでしょうか?
UNITY HUBから4.系統を呼び出したいです VSCode の拡張機能、ESLint には、package manager である、yarn のインストールが必要。
yarnには、node.js のインストールが必要
yarnは、npm でインストールせず直接、Windows10 にインストールした
where node
C:\Program Files\nodejs\node.exe
where yarn
C:\Program Files (x86)\Yarn\bin\yarn
C:\Program Files (x86)\Yarn\bin\yarn.cmd
C:\Program Files (x86)\Yarn\bin\yarn.js
Program Filesフォルダの、(x86) の有無に気を付けろ! 四の五の言ってないでやってみました
どうせUNITYで作るスマートフォン3Dゲーム開発講座という本のサンプルを動かしたかっただけなので
program filesに4.7.1をつっこみました
普通にUNITY HUBで認識しました unity始めたばかりの者なのですが
いきなり全てのスクリプトに
No MonoBehaviour scripts in the file, or their names do not match the file name と表示され、
アタッチもできなくなってしまいました。
調べて出た解決法はファイル名とクラス名を同じにすることだったのですが、
新規にスクリプトを作っても同じようなものが表示されてしまいます。
どなたか解決方法を教えてくれないでしょうか? たまにあります。
バックアップをこまめに。
リブートすると直る時も稀にあります。 >>659
ありがとうございます。
やっぱり無理ですか・・
それほど規模の大きいものでもなかったので助かりました。
こまめなバックアップを心がけていきます。 >>657
環境構築運用は、めちゃめちゃにやるもんじゃない!
>>656
のyarn には、(x86)が入っているけど、node には入っていないだろ
Program Filesフォルダの、(x86) の有無に気を付けろ!
OS を、よく調べろ なんでstart()でゲットコンポネートリジッドボディ要るの? アバター作ってるんだけど、ポリゴンが多すぎるっていつも弾かれる。何回もへらしてるんだけどな。まだ公式のUnityちゃんでもこの現象でるのはやってないけど何か間違ってるんだろうな。 ヌーブ過ぎてアンリアルエンジィンとの区別がつかないんだから許すな まだこのスレ動いてるかな?つい先ほどunity質問スレで聞いたことなんだけど、かなり初歩的な質問だった上に自分では結局分からなかったので改めてこちらで質問します
自分でblenderで作ったfbxモデルをインポートするとshaderを弄れない、という質問
fbx、テクスチャをまとめたフォルダを丸ごとインポートしてさらにそこからfbxをシーン上に置いたんだけどマテリアルは設定されていないみたいで…
結局マテリアルはどこにあるのか?どうすればそれを割り当てできるのか(できれば自動で丸ごとまとめて)?
外部サイトへの誘導でもいいのでどうか助けてほしい
よろしくお願いします 質問です
ほぼ空っぽなプロジェクトをビルドしても容量が40MBぐらいになってしまいますが
その容量以下にすることはできないのでしょうか キーボードや一般的なゲーム用のコントローラーではなく
アンリミテッドハンドや脳波計を使うゲームって簡単に作れる? 簡単かどうかは人それぞれの能力に依っちゃうけど、概ね高卒級(コピペができる)のプログラミング能力でできるよ 意外と簡単にできるんですかね?
ありがとうございます。 apiにアクセスしてJSONで取得したデータを元にして
自分で用意した文字や画像に置き換えて
Unityの画面上に座標指定で表示させるにはどうしたらいいのでしょうか?
よろしくお願いします どれだ
JSONの読み取り方なのか
座標指定すらできないのか >>677
例えば天気予報のapiで
東京なら東京のデータを指定して
晴れor雨や降水確率を読み取り、それに合わせて
自分で用意した図や絵が自動で表示される
といったようなことを自動で随時更新するような
プログラムにしたいです
気象庁とかのページの表や図をそのまま使って表示させても
問題ないならそれでもいいんですが
たぶんアウトですよね 特に難しい処理ないから
必要な処理工程に分解すれば
道は見えるじゃろ AdMobのメディエーションの設定について質問です。
以前にnendのプラグインはインストールしたけれど、nendの広告はまだ使わずに、
現在、AdMobのバナー広告を使ってる状態です。
今回、AdMobのメディエーションを作ってnendを入れようと思います。
AdMobのメディエーション設定画面でnendのapiキー、レポートapiなどの入力をして、
メディエーショングループの作成は終わりましたが、
「nendSDKとadapterのインポート」の仕方がわかりません。
https://github.com/fan-ADN/nendSDK-admob-mediation/wiki/%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95
このページの「nendSDKとadapterのダウンロード先は以下になります。」のリンクにある
Android用の二つのページを開いた後で、
どの部分をクリックして、どうすれば導入が完了するのか教えてください。
よろしくお願いします。 知らないけど
そこまでやる必要あるの?
UNITYADから逃げて
ADMOBから逃げて
NEND? すいません。見るところを間違えてました。
https://developers.google.com/admob/unity/mediation/nend
Unity用のこのページを見て、step3でダウンロードした
GoogleMobileAdsNendMediation.unitypackage package
を、UnityのAssets > Import Package > Custom Package
でインポートしたところ、
・Gradle failed to fetch dependencies.
・Unable to determine which Android packages are installed.
・NullReferenceException:Object reference not set to an instance of an object
このようなエラーメッセージが出ました。
もう一度インポートしようとすると、「このパッケージはもうすでにインポートされてるよ!」
というメッセージが出たのですが、
インポート自体は問題なく完了したのでしょうか?
普段このプロジェクトでビルドして問題なくスマホで動き、AdMobの広告も表示されています。
このエラーに対してはどのように対処したらいいのか教えてください。
よろしくお願いします。 >>682
公的機関のは自由に使っていいんだっけ?
他サイトのページの中の一部分をUnityで利用するのは
何ていう処理をすればいいんですか? >>685
依存ライブラリも揃ってないのに、インストールできたの?
無理だと思うけど、それでやってみれば?
アンインストールするとか、初期化した方が良いのでは? 2Dでプレイヤーから弾を発射してカゴに入ったらゴールにするにはどうすれば良いでしょうか 2Dではゴールエリアの設定がわからない・プレイヤーではなく弾が入ったら終了という条件を設定したいです その通りに作ればいいじゃない。
まず、発射するとこ作る
カゴを作る
入ったかどうかの判定作る
※入力は仕様わからんから適宜、その都度作る。
こんなけ。 容量が重くなってるらしくてボタンがintractable=trueでtrueになったりならなかったりするのですがどうすれば軽くなりますか 容量が重くなってボタンの挙動がおかしい
→どうしてそう思った? ちゃんと動作するときと動作しないときがあるからです。 重いと思ってるものを、なぜ重いかを考えれば、工夫が思いつき軽い形にできる、する事が可能となる。
情報な過ぎてそれくらいしか言えん。 >>687
Unityをアンインストール後、再インストールして
ビルドしてみたところ、やはりエラーになってしまいました。
Gradle build failed.
となって、jdkフォルダなどに問題があるようです。
AdMobメディエーションにnendを入れるには、
https://developers.google.com/admob/unity/mediation/nend
ここに書いてあることだけではだめなのでしょうか?
nendのsdkをlibフォルダに入れるなどの作業も必要なのでしょうか
よろしくお願いします。 >>694
漏れにも、わかりません
詳細なエラーメッセージで、検索してみれば?
それか、その会社・コミュニティに聞くとか >>696
ありがとうございます。
検索すると、似たようなケースは見つかるのですがよくわかりません。
Resolution failedでこんなのも出ました。
どなたかわかる方いたらよろしくお願いします。
Failed to fetch the following dependencies:
com.google.android.gms:play-services-ads-license:15.0.1
com.google.android.gms:play-services-ads-lite-license:15.0.1
com.google.android.gms:play-services-base-license:15.0.1
com.google.android.gms:play-services-gass-license:15.0.1
com.google.android.gms:play-services-location-license:15.0.1
com.google.android.gms:play-services-tasks-license:15.0.1 >>697
依存ライブラリを取得できずに、エラー。
その原因を探る
ビルドオプションで、詳細メッセージを表示して、再ビルドするとか、
エラーメッセージで検索するのが基本
セキュリティーエラーなのか、ライブラリのURL が変わったのか、
他のライブラリが古くて、依存を解決できないとか、エラーの理由を突き止める
それか、その会社・コミュニティに聞くとか Unityで自作ゲーム一本作ると、いろんな仕事に潰しが利く知識が身につくって本当? >>700
知識は特にないな
ていうかユニティー関係ないよ
とにかく完成させてどこかにアップロードすることが重要 ゼビオ株式会社(本社:福島県郡山市)と株式会社ヴィクトリア(東京都千代田区)は、
2018年11月29日(木)よりスーパースポーツゼビオ・ヴィクトリアの全店舗にて、
株式会社LDH martialarts(本社:東京都目黒区)から新登場するサプリ
「EXSUPPLI BLOCK」「EXSUPPLI PARTY」の発売を開始いたします。 自分はアクションゲームが作りたいのですが
最初は簡単なパズルゲームでも作ってとにかく完成させることが大事だと聞きました 作るのも遊ぶのもクソつまらないゲームでいいから、完成させる事が大事。
タイトル、ゲーム中、ゲームオーバー。入力、音、画面表示。
すると、一通り学ぶことになる。 2Dシューティングのチュートリアルをやっているのですが、
GUIテキスト(Deprecated)というのをつかっても文字が表示されないし、
This component is part of the legacy UI system and will be removed in a future release
とでるんですが、どうやったら文字が表示されるんですか? >>706
今のバージョンだとそうなっちゃうね
おそらくあのチュートリアルが古いまんまなんだよね >>706
そうなんですか・・・
他の方法はありますか? uMMORPGで、装備ごとにアニメーションを設定できません
Official Threadの46ページでZheniteという方が解決していましたがバージョンが古く
今はItemTemplate.csが無くなってその方法が使えなくなりました
アニメーターのパラメータでweapontypeごとに武器アニメーションを切り替えるには
item.cs player.cs 等をどのように書き換えればいいんでしょうか? >>708
他の方法はいろいろあるよ
とりあえずそこはすっ飛ばして進むか他のチュートリアルでもやっても良いと思う
あとわからないときはとにかくひたすらググれば良いよ 新規プロジェクトを作るときに2Dor3Dを選びますけど、
2Dでつくったプロジェクトのなかで、
特定のSceneだけ3Dにすることはできるのでしょうか?
できるのなら、そのSceneのどこで設定すればいいのでしょうか? >>713
ありがとうございます
あまり気にしないでいいんですね VR対応アプリって、
カメラの設定は特にしなくても
VRゴーグルで見ると、360度自由に見れるの? https://unity-code.com/button-read-scene/
これを見てボタンクリックのシーン遷移をやろうとしているのですが、
Buttonを作って、
【Button選択】→【Inspector】→【On Click】→【+をクリック】→【Canvasをドラッグ&ドロップ】
→【(先ほど自分で作成したスクリプトの名前)】→【OnRetry()をクリック】
のところで、
OnRetry()の選択肢が見当たらないのですが、
どうすれば出てくるのでしょうか? >>717
その説明通りに作ってみたけど、出ました
もしかしてスクリプトを作成の時に「OnRetry()」関数を作っていないのではないですか?
https://i.gyazo.com/25b84db1a849b2f487dbed4c24bda618.png
https://i.gyazo.com/f17791c598d81719467e25634d5bd8aa.png
↑こちらスクリプト名は違いますが、関数名はそのままです
又は、Canvasにスクリプトをアタッチしていないとか?
まぁ関係ないと思うけど、当方のバージョンは2018.3.0f2です >>718>>719
ありがとうございます
OnRetryが抜けてたようなので、書いて、
Canvasにスクリプトをアタッチし、CanvasをButtonインスペクターのOn Clickにアタッチし、
選択肢からOnRetry()を選べたのですが、
Unity上で再生すると、画面にボタンの「Button」の文字が見えなくなってしまいます。
他の画像の裏に行ってるのかと思い、座標をいじってみたのですがでてきません。
一番手前?に持ってくるような処理が必要なのでしょうか? >>720
サンプルは単純なボタンだけの画面だからそのような処理はないと思うけど
再生すると、シーン1が表示される
そのあとシーン2に移動する
どちらにボタンはあるか確認してみてはどうでしょうか?
何か、ご自身で画像とか配置したのなら、最小限のオブジェクトにしてみるといいかと ありがとうございます。
シンプルにして色々試したところ、
再生画面で、Scene画面で設置した座標とは別のところにありました。
再生画面とScene画面では座標軸が別々になってるんですかね。
Scene上の特定の場所に固定させることはできないのでしょうか? >>723
ありがとうございます
なぜかScreenSpace-Cameraではできず、World Spaceにしたらできました 3ds maxでアニメーションを作成していたのですが、揺れ物のシミュレーションに困っていてunityにたどり着きました。
unityにfbxを読み込み、アニメーター?でモーションを再生することはできたのですが、
その状態でモデル自体やボーンにspring boneスクリプトやrigid bodyなどを適用してもシュミレーションが行われませんでした。
どのように設定すればよいかご教示願えますでしょうか。
すみませんがよろしくお願いします。 これさ自分でスクリプトとか使わないで左みたいな竹とんぼ見たいの落下させて回せる?
右の爆弾見たいのは下のキューブがドラッグを増やした羽で逆にして投下しても弾頭を下にて落ちるんだけど
竹とんぼの方は全然回らないんだよね
パーティクルとかぶつけて回すとかも有るんだろうけど
これジャイロ効果とかは効いてないのね
高速でぶん回してるのに少し小突かれただけでびょんびょん飛んでってワロウタw
イカサマなしのコマアプリとかは無理か Roll A Ballをクラス図書きながら復習してるんだけど、Cubeにコライダーつけるとクラス図的にはこんな感じ?
TransformとかObjectのやつには必ず付いてるクラスだし、いちいちそこも含める必要ない?
どうだろ?
https://i.imgur.com/VBvNy37.png
クラス図作成できインストール不要のフリーWebツール
でもメンバー登録(無料)しないと保存できないが。
https://online.visual-paradigm.com/ja/
他のUnityのクラス図みてもいちいちTransformクラス書いてるように見えないしさ。 薄型ノートPCでUnityを使っています。
Core i5 8250U 1.6Ghz 4コア,
インテル® UHD グラフィックス 620,
メモリ 8GB
SSD 512GB です。
2Dの時は動作が軽かったのですが、3Dになってから異様に待たされるケースが多いです。
グラボが搭載されていないので、遅いのでしょうか?
よろしくお願いします。 普通はグラフィックの3Dにしろ2Dにしろテクスチャのデータとかはグラフィックメモリーに格納してゲーム中に再利用したりするんだ。
タスクマネージャのGPUのところにメモリーのどれだけを使ってグラフィック処理するって書いてあるよ。
https://i.imgur.com/uGaLOAI.png
そこで使うメモリーの量増やすとましになるかも。
でもそうなるとメモリがハングアップしてSDDの領域をページファイルとして使うからSSDの読み書きが増えてSSDが逝く可能性もあり。 >>728
クラス図とか継承とかそんなもんやらんよ
やってるの? >>729
おれコア3−2120 4gでやってるけど
グラは勿論オンボ
中古の8500円のリース流れのNECのメイトだよ
大体リジッドボディー付きののキューブを1万個すと1fspぐらいになる
遅いのはいいけど環境光とかが変になる
スカイボックスは切ってるわ >>732
まあチュートリアルでもTanksやAdventure Gameあたり行くと次から次へとcs作ってあっこから変数をあっちのメソッドを使ってとかなると書いてる本人もどういう構造か分からなくなるから。
それに、クラス図書いたほうがいいって言うUnity開発者も数人いたから。
Roll A Ballの場合だとこのCude オブジェクトのTransformにPlayercontroller,csからオブジェクトのposition持ってきてAddforceで力加えるからなぁって。
でもほかの人の見るとゲームオブジェクトのTransformをクラスとして書き出したりしてないからrちょっと悩んだ。
とりあえずスクリプトに絡んでないtransformみたいなクラスもすべて書き出してみるよ。
ありがと。 環境光とか要らないのにな
無駄な機能多過ぎだわ
ライティング関係は4時代がベストだった >>735
ライティング関係の機能が複雑すぎると、描画が重たくなる。 それ
どうせ使わないんだからディレクショナルライト1個しか使えないようにして軽くしてほしいわ ここは初心者の質問疑問に初心者が答える弟子スレだから
雑談は総合スレでやれ >>738
Direction Light 1個までのshaderもあるけど
速度的には大差なかった
負荷対策なら基本的にmobileシェーダーを使う
どうせブラックボックスだから
実測で調べて比較して使うしかない
ゲームエンジンなんてそんなもん Shader ふぉるげを殺してまで手に入れたのはバグだらけのShader Graph フリーになったとき記念にDLしたけどShader forge
現バージョンじゃもう動かない LoadSceneでシーンを遷移すると、元のシーンは破棄されますが、
元のシーンの状態を保ったまま別のシーンを表示させて、
その後、元のシーンに戻ることはできないでしょうか?
追加ロードが似た感じになるかとも思うのですが、
メインカメラの設定などを新たなシーンの設定にしたいです >>743
シーンの追加呼び出し
SceneManager.LoadScene("Scene2", LoadSceneMode.Additive);
シーンの破棄
SceneManager.UnloadSceneAsync("Scene2");
https://imgur.com/a/7JZkfWg UnityでBuild Settingsで、targetをAndroidに変更しました。
そうすると「platform does not support compute shaders」というエラーが出ます。
どのようにすれば、よろしいでしょうか? 該当のシェーダをはずすんじゃないかな。知らんけど。 新しいパソコンを買えばいいんじゃないかな。知らんけど。 スマホ向けに作ったゲームをスマホで遊ぼうと思うと、現状はアプリとして正式に公開する他ないんでしょうか?
webGLで書き出してweb上に乗っけてもスマホのブラウザだと動かないんですよね
友達と少し遊べればいいやくらいのものなんですが、、 正式には対応してないから不具合が起こりうる的なこと書いてるの見たんですが、実際はあんま問題なく動く感じですか? publicな静的メンバを作るときpublic staticとstatic public
みんなどっちに揃えてるよ やっぱり、public とstaticは併記いるんですよね。何かエラーが出るみたいだから記載した、ぐらいの認識で汗。
メンバ関数とかよくわかってませんが、まあ、完成させれればいいや、でした。 >>753
>>754
確かにそうですね、ありがとうございます やってみます…! arm64用のsqlite.soってどこにありますか? 旧バージョン(4.0)をインストールしようと思ったのですが
ダウンロードしたEditorファイルってどうすればインストールできるんですか?
(UnitySetup-4.7.2.1549152664) 自己解決しました 拡張子.exeつければできました 同じスクリプトのAwake関数が呼ばれる順番はどうなっていますか
ヒエラルキー上に
GameObject (1)
GameObject (2)
GameObject (3)
とあったら(1)→(2)→(3)と呼ばれるのでしょうか。 実際object作ってAwakeでデバッグ表示してやってみりゃいいでしょでしょ やってみてもその環境でそうであるという事しかわからないので >>763
それ、そもそも生成順番に依存した作りにすることが間違いだよ
具体的に何がしたいかを言えば解決策はすぐ教えてくれるよ 解決はもうしているので仕様上どういう動作をするのかを確認したいだけです それなら良かった
どうだろうね、全部同じ名前なら見た目上からだろうけどそんなもん保証されないだろうし
わりとどうでもいい Awakeの呼び出し順は保障されてないから順不同
例えばスマホ用にビルドすると端末によってUnityエディターとは違う順に呼び出されたりするからバグの元になるぞ
もう作ってしまったのであれば、Execution orderから制御することができるからそれやっとけ 同じスクリプトでもExecution orderは使えるのですか ごめんその質問を追求しても無意味だからもうやめて? 破棄はしてないが、何もせずSceneロードするとSceneの初期値になるよね。
Scene Managerとか作り、そこにSceneごとの状態を保存してSceneのリロード時にそのファイルを読み込ませればいいのでは?
ファイルセーブや一時的なsave fileだったらXenoPrefsをおれは良く使うけど。
暗号化までできるから。 スクリプトに記述してるメソッドの順番でも設定したいのかねえ…
そのオブジェクトが呼ばれたときにそのオブジェクトが持ってるコンポーネントやScriptが生成されるんだと思ってるが。 質問失礼いたします。
unityで実行画面をレンダリングしてムービーを作ろうとしているのですが、
レンダリング素材(color、depth、
shadow)など要素ごとに書き出すにはどうしたらよいでしょうか。
UE4だと下記のURLに記載されているようにディフォでそのような機能がついていたので質問させていただきました。 なんかSTEAMで売るゲーム作るから無償でやってくれるドッター募集、
完成したら報酬にゲームのキー1つあげるみたいな無茶募集あったんだが
マジで無償なの?みたいな質問送ったら「黙れやクズが。
てめえに言われることじゃねえよカス。
さっさと首吊って死ねやカス。」
っていうメール来たわ… よくあまりnewは呼び出さない方がいいと見るのですがコルーチンの場合も
yield return new WaitForSeconds(1)
はいいけどループの中で処理させながら
yield return new WaitForSeconds(0.01f)
のように何百回も呼ぶような使い方はまずいのでしょうか? >>780
答えから言うとまずい
new WaitForSeconds(0.01f)する度にGC処理が走る
ループ外で生成して使いまわした方がいい ありがとうございます
勝手にそのたびにnewしないと意味がないみたいに思い込んでました
全部使いまわすように修正しときます 安易にwait使うんじゃなく
変数をタイムアップさせて使えよ え、そんなまずいの?
つまりどゆこと?
GCって何?
どんどんメモリ喰うってこと?
それはいつ解放されるの?? カクつくかどうかは環境による
無駄な処理が増えるからスマートじゃないよって話 無駄な処理じゃねえだろ
それ以外の良い方法がないだろうが WaitForSecondsの例でいえばループ毎にnewしてるなら
それは無駄なGCが走る可能性のあるコードでしょ
必ず別の場所にキャッシュするよう変更できるってモンでもないけど
可能なら避けるべき 初心者スレで可能性とかくだらんこと言ってんじゃねー
まずは作れ作れ作れ TextMeshProのspriteタグで、SpriteAtlas内の画像を指定する方法はありますか?
せっかくSprteAtlasに固めたのに、別にスライス画像を用意するのが億劫です まループ内のnewは極力避けるのはセオリー
作ってから直しても良いけど いやそうじゃなくてさ、、、
コルーチンの中のWaitForSecondsに特化した話なんだが
yield return new WaitForSeconds(0.02f);
これの new を使わない方法あるのかって話
ないだろうよタコw いやそうじゃなくてさ、、、
> yield return new WaitForSeconds(1)
> はいいけどループの中で処理させながら
> yield return new WaitForSeconds(0.01f)
> のように何百回も呼ぶような使い方はまずいのでしょうか?
最初から「ループ中で何度もnewするのがまずいか」って話なんだが
不必要にnewしてるのならループの外の追い出せって話
質問読んでねえじゃんタコw >>797
バカは黙ってろよ
こっちが恥ずかしくなる これだったら1フレームに1回しかnewされないじゃん、気にしなくてもいいんじやない? ヒープとGC Alloc理解してやってるなら
もう何も言うまい インポートしたShaderをフォルダー移動させて整理したいのですが、Shaderが正常動作しなくなります。
移動させる方法を教えてください。 https://twitter.com/unity_japan/status/1093784871095328768
の画像にあるように
テクスチャの繰り返しがわかる(タイルの繰り返し)状態を
テクスチャの繰り返しがわからない自然な感じにするのってどうやればいいの?
https://twitter.com/5chan_nel (5ch newer account) while(true){
yield return new WaitForEndOfFrame(0.01f);
}
これを
var wait = new WaitForEndOfFrame(0.01f);
while(true){
yield return wait;
}
こうした方がGC処理が無駄に走らなくてスマートだよって言わないと馬鹿にはわからない >>801
何この例
そもそもコルーチン使う事自体が無駄じゃないの。 コルーチンを使うのがカッコイイんだよ!!!1111 例えばの話ができない人と理解力の足りない馬鹿とコルーチン使えない素人以下の猿 うっせえ。お前らレベルでGC意識するよりもさっさと作れ。出来てから考えろ。 インベントリ関連のアセット「DaD Inventory」を改造しながら2Dのスマホゲームをつくっています。
imageオブジェクトの上にspriteのポップアップを重ねて表示すると、ポップアップのクリックができなくなってしまいます。
スマホゲーでよくみる、下記処理を実現したいので、お力添えをいただきたいです。
<実現したい処理>
1.アイテムをゲットしたときにポップアップを表示
2.タップでアイテムをインベントリに格納(その際背後のオブジェクトを無効化)
※タップ以降の処理は実装済み
<現在の条件>
・2D
・Version 2018.3.0f2 Personal
・2つのオブジェクトの位置を変え、重ならないように配置すると問題なくクリック処理が実行されます
・spriteのほうにはBoxCollider2DとSpriteRendererがついてます。ほかにアセットのほうでつけられていたスクリプトが2つついてます
・imageのほうにはimageとアセットのスクリプトが3つついてます
・mainCameraにはアセットのスクリプトが1つついてます
つづきます <試したこと>
@それぞれのオブジェクトのインスペクターからLayerを変更し、spriteをimageよりも前面に設定
ASpriteのインスペクター「SpriteRenderer」のSortingLayerを変更し、imageよりも前面に設定
B@Aをヒエラルキーの改装を変えながら実行
→いずれも変化なし
BEventSystemをimageオブジェクトのほうにアタッチし、インスペクターからenableにしてその上にSpriteを重ねる
→エラーが出て一時停止状態になる
アセットのスクリプトでEventSystemを使っているようで、無効にすることで一切処理ができなくなるようです
<考えていること>
アセットのスクリプトが変な動きをしているのかと思ったのですが、そもそもクリックができていないということで当たり判定の関係なのかと思うようになりました。
そうであればUnityの機能を変えることでクリックできる術があるのではないかと思い質問に至りました。
また、Spriteのクリック判定がColliderを使うということはなんとなくわかるのですが、いまいち理解できず、アセットのスクリプトも解読が進みません・・・
(プログラムはほぼ未経験な状態です)
説明が下手ですみません、情報が不足していた場合はご指摘いただきたいです。
アセットのスクリプトが原因なのであれば仕方ないのですが、Unityの機能の側面でなにか打開策はないでしょうか? imageのraycastTargetをfalseにしたら解決しそうだな
imageの描画順がSpritよりも手前に来てるからColiderがimageに遮られて反応しなくなってるんじゃね? >>811-812
CanvasのRenderModeは何になってる? >>812
unityの仕組みがわからないひとは アセットを買えばいい >>imageのraycastTargetをfalseにしたら解決しそうだな
インスペクター上でチェックを外してみましたが変化なしでした…
>>CanvasのRenderModeは何になってる?
ScreenSpace - Cameraになっています
Spriteを前面に持ってこれなかったので調べて自分で変更しました
いざ前面に置けたと思ったらクリックができない、という状況でした
あと出しになってしまいすみません >>816
すみません、解決しました!
>>imageのraycastTargetをfalseにしたら解決しそうだな
こちら、子オブジェクトにもたくさんimageがあったのですべてチェックを外すことで処理がすすみました
親の設定が引き継がれると思い込んでおり親のみ弄っていましたが、よく考えればそんなことはないですよね。
的確に問題点ご指摘いただき大変助かりました、ありがとうございました! >>806
え、、、それ同じことなの???
ちょっとあとで確認してみるが コルーチン使わないでWaitForEndOfFrameの直後に割り込みできますか? ここ初心者質問だから割り込みとか難しいのは普通の質問スレ行けばいいとおもう えぇそこから知らなかったの・・・?
Unityのパフォーマンスがらみの検索すりゃ良く出てくる話だしさすがにそんな想定はしてなかった
ちなみに現在だとWaitForSecondsのnewに20BがAllocされる
(昔のUnityでコルーチン呼び出し毎に無駄に確保されてたメモリとは別の話)
例えば0.1秒間隔のコルーチンが10インスタンスぶんあれば一秒間に2KB確保されるわけだな AオブジェクトをBオブジェクトと同じ方向に向かせたいのですが、A.transform.rotation = B.transform.rotationにするとxyz全部の向きと同じになってしまうのですが、仮にxのrotationだけなどに合わせたい場合どうすればよいでしょうか? A.transform.rotation.x = B.transform.rotation.x A.transform.rotation = new Quaternion( B.transform.rotation.x, A.transform.rotation.y, A.transform.rotation.z, A.transform.rotation.w ); A.transform.rotation = Quaternion.Euler(B.transform.rotation.x,B.transform.localEulerAngles.y,B.transform.localEulerAngles.z);
} ゲームを完璧に止めたいんだけどどうすればいいか誰かご存知ですか?
つまりTime.frameCountが増えずオブジェクトのUpdateが呼ばれない、フレームが更新されない状態にしたいです update呼ばれないと停止から復帰できないから無理じゃね >>835
それはやりたい処理が終われば復帰するように書きます そんなものはない
停止フラグがtrueならUpdateでreturnするようにしたら? 質問すみません スクリプトエディタでソースを書いた後、上書き保存をした時点で
UnityのInspector画面で.csのソースは更新されますか?
いくつかのチュートリアルを済ませた程度なのですが、その時は上書き保存で
Unity側も自動更新されてた気がするんですが...
皆さん手動で歯車アイコンのResetで更新してるのでしょうか? >>839
だとソースを書いた後ゲーム再生した時、ソースは反映されてるのですか?
自分の環境だと反映されないんです。でも最初は反映されてた気がして
おーすげー便利ー!って感じてたんですけど
反映されてるかされてないかくらい教えていただけませんか? あまり気にした事なかったけど、反映されたりされなかったり。
どうにかしたかったらエディタ拡張で即反映とかできると思うけど。 >>838,840
自分の環境だとスクリプト保存した時、反映されてます。
前はスクリプトエディタからunityに戻った時、少し止まるので、そこで反映されてるんだと思いました。
SSD換装したら、少し停止がほぼなくなったのですけど。 基礎の基礎はネットより、本を見ながら行きつ戻りつした方が分かった気になる現象。
なんでだろう。紙と電子では入力が違うのかな。慣れの問題だと思うけど。 私も>843さんと一緒だよ。
unityに戻ると一瞬クルクル。
逆に今まで反映されなかったことない。
ひょっとすると、保存のフォルダが違ってないかな?
プロジェクトのバックアップを取るのに変わったことやってない? 俺の環境ではそんなこと起こったことないな
自動的に反映される
てか同じファイル参照してんだからそんなことあり得ないと思うけどな
Unityのコンパイルが走ってないだけなんじゃないのか? 皆様貴重なレスどうもありがとうございます
やっぱ自動保存されてたんですね 自分は5.5でやってたんですけど
2018はどんなのだろうとインスコして、5.5のプロジェクトを読み込むと
.csがコンパイルエラーを起こすので「5.5は5.5、2018は2018で1から作ろう」
とフォルダ分けをしたあたりで反映されなくなったような気もします。
すべてアンスコしてレジストリも消して入れ直して、5.5でnewprojectで
見ても治ってませんね。フォルダ奸計をもう少し当たってみようと思います それ、問題はunityじゃなくて、VS?の方じゃないか? プログラムにエラーがあるとインスペクターには反映されない
もうひとつpublic変数は初回しか反映されない
インスペクタ上で書き直すかリセットしないと反映されない >>848
VS.codeやMonoでも同じ症状なんです
>>849
初心者にありがたい情報です。テストとして//aaaなどが反映されるかでやってましたが、
Debug.Logなどの簡単なものも反映されません。
unity アセット 更新 などで調べた結果、Unity外でファイル操作は絶対すんな!
とありましたので、原因はコレでしょうね。しかし解決策が見つかりません 勘違いしてるだけだ
おちつけ
あ、ここ初心者スレか >>851
ありがとうございます。勘違いという事で終わらせようと思います
>>all
スレ汚しすみませんでした ここで聞いていいのか分からんけど以前qiitaにunity物理演算で迷路を作る記事があったと思うんだが全く見つからない
もし同じものを見た人がいたら教えてほしい うーん、やっぱり納得いかない
教本にも初心者用サイトでも例えば "Hello,World"を表示させる内容が
スクリプトを書く→アタッチ→プレイ押して確認 だけ
自分の環境ではUnityに戻って.csのソース見ても更新されてない
必ず歯車ボタンのResetを押さないと反映されない
さんざ調べたけど「たまにある現象、歯車リセットで治るよ」的なのが2件程度
誰か原因解る方いませんかー! UnityのAuto Refreshがオフになってるとかは? >>856様
それでした!いけました!本当に有難うございます!!! unityで作ったゲームって何か動きもっさりしてるんですが、コンシューマのようにキビキビ動くの作るのって
デフォルトの機能では無理なんでしょうか? >>859
無料版でキビキビ動く超大作を作ることは可能
Unityが悪いのではなくお前の作り方が悪い >>868
それを聞かないと分からないレベルでは作れないので、まだ知る必要はないよ。他の事で時間を使って有意義に過ごしてください。 >>868
簡単に言えば広大なマップを作って負荷が掛からないように必要な部分以外は省略して読み込む
「必要な部分は省略して読み込む」の部分をどう実装するかがキモ つまり広大マップが元々想定されていない微妙な開発環境です。 1レベル1シーンのコンセプトがウケて広まったんだろ?広大マップが苦手でもいいじゃないか。馬鹿にしてるわけじゃないぞ。 広大マップって考えがそもそもエンジニアに向いてないよね
見えてない範囲も処理させる気なの? アセットを沢山買って配置すればオープンワールドになるでしょ >>874
Unityは複数のシーンの同時読み込みが出来るから別に苦手というわけでもない
簡単にオープンワールドやりたいなら適当な区画ごとにシーンを切り分けて
キャラの位置に応じて必要なシーンの読み込み処理書けばいいよ >>875
そうそう、unityは見えてない範囲も処理するのよ。エンジニアに向いてないよね。 画像の書き換えは見えてる範囲だけだろjk
キャラの計算は全部やるとしても >>877
それ今朝読んだ本に書いてあった。
loadsceneaddsyncだっけ?
LoadSceneAsyncだった。 ベイクしたライトがカレントのシーンしか有効にならないからなぁ
あまりマルチシーン前提の設計になってないのかな その辺気になり出した人たちはunrealに流れていって、Unityに残ってる人達はこのスレ見れば解る通り。 >>881
モバイル用が基本だから別に問題ないんだよ
なんなら今のソシャゲの殆どがマルチシーン無しの5系で動いてるし バージョン管理なんですが、マニュアルにperforce使うようにと書いてあるんですけど、無料版もありますか? 友人が作ったものをテストしてます
Radeonだと読み込めずにピンクになっちゃうんですけど原因はどんなのが考えられるでしょうか
GeforceにするかShaderをtextureにすると一応使えるんですが 初心者です
プレイヤー、弾、敵で全員にあたり判定もたせたらプレイヤーが弾出した瞬間にあたり判定もらって自爆するんですけどここだけあたり判定消せないですか?OnTriggerです あざす
レイヤー分けやってたんですけど言われてもっかいみたら2dゲームなのに調べたまんまphysicsでやっちゃってました >>885
perforce、5ユーザーまで無料みたいね。無事使えるようになったけど8時間くらいハマったわ。 2DのSpriteの仕様について質問
・クリックで2枚の画像が差し替わるという単純なもの
・差し替わった画像の位置が気に入らないからヒエラルキビューで座標などを修正した
・座標を修正したものはオブジェクトになっているから、これをD&Dでスクリプトに
入れる事が出来ない
・プロジェクトビューのスプライトは座標をいじれない
皆はスプライト制作の時点でズレのない完璧なものを作ってるんでしょうか? ん?
ある画像が表示されててそれをクリックすると別の画像に変わるものを作りたいのかな? >>896
そうです
色んな初心者用の本やサイトを見ても用意されてる画像は修正しなくても
良いものばかりで、それ前提で話が進められているので詰まってます。 >>895
editorで同位置同サイズで表示させればそのまま使えるようにしてあるよ
そもそもわざわざズラしたりサイズを変えたりする必要が無いし
実装に負担を掛けないアセット制作は基本やで ・・・どこを勘違いしてるのかがいまいちわからない
位置を修正したらもうそれで完了では?
その後に何がしたいのかわからない
もしもそれを量産したいならプレハブにぶっこんでおけばいいかと スプライトコンポネに画像Aを入れた時の位置を修正したいってことだろ
>>895は画像Aのファイルをヒエラルキーにドラッグしてゲームオブジェクトにしたあとそれの位置を変えることで対処しようとしたが当然元の画像の位置中心は変わりませんでしたと 自分が聞きたいのは >>900 さんの通りです
最終的なアプリの完成形はUnityの「Gameビュー」なわけですよね
それで、>>895 の通り「スプライトを差し替える」「でもなんか画像Bの位置が気に入らない」
そういった場合、皆は別ソフトで画像の修正や計算などをわざわざするのか?
Unityにはそういう機能は無いのか?と聞きたかった訳です
Scene画面でそういった座標やシェイプを修正した場合、それはもうSpriteでは
なくなる。要するに「Scene画面の実際のゲーム画面でこの位置がいいな、と
修正したオブジェクトをSpriteに戻してProjectビューに戻せないの?」
と言っているのです。 なぜなら、「スプライトを差し替えるスクリプト」をアタッチして
それに対してD&D出来るのは、Project欄にあるSpriteだけ。でもそれじゃあ
座標や形を修正したものを伝えることが出来ない。
Flashでは見た目を微調整しながらやってた事がUnityでは出来ない。
皆どうやっているのか?と聞いております。 やべえ
まじで言ってることがわからん
もっと具体的に教えて
具体的にどんな画像?
具体的にどんなことがしたいの? うんよくわからん
スプライト自体に位置情報を持てるかというと、シングルじゃなくてマルチにして切り取り範囲を微調整するか中心位置を微調整するかだと思うけど
画面見ながら微調整したいならもうそれ別のゲームオブジェクトにしちゃえば?
レイヤを手前にして サイズの違がう画像を複数スプライトに登録して、そのスプライトをクリックしたら切り替わる?
スプライトにスプライト登録できるの?
オブジェクトに登録? 絵を書いて説明出来ないから難しいね。じゃあ逆に質問させて
1)丸いボタンをオリジナル画像で作るよ!クリックするとボタンのグラフィックが変わるよ
2)ボタン画像はPNGで2枚用意したよ 画像Aと画像Bはまるっきり形もサイズも違うよ
そして、2枚の画像には全く同じ大きさの「+」のマークが入ってるものとする。
3)これをUnity上でボタンをクリックして画像を差し替えた時「+マークがぴったり重なって
いる」ようにするには皆はどうする? >>908
なるほどね
スプライトは基点を設定できるぞ
スプライトごとにね
デフォルトだと縦中心横中心だけど、
左上にしたり自在にカスタムできる
はい解決 補足 >>908 を元に、まず画像Aをオブジェクト化して画面に配置する。
で、オブジェクトAに「クリックしたら画像Bに切り替わる」スクリプトを
アタッチする。これって双方の「+」印を合わせるのは難しいよね?
そもそもこんな作り方しないのかな それぞれのスプライトの基点をその+にすれば解決だろ
頭固すぎ >>910
ちゃんとレス全部読んでるか?
もう答え出してくれてるぞ レス読んでるます。しかしピボットとか聞いたこと無い言葉がわんさかで...
要するにスプライトエディタ勉強しろって事ですよね。教本では
「これを押してスライスします」くらいの事しか書いてなかったもんで。
答えてくださった皆様どうもありがとうございました 今日のUnity道場見てたけど行列の話が出てから
「なるほどね(わからん!)」という感じだ! 質問です
プログラミング経験が全くないモデラー志望の学生なんですが、Unityでシェーダー弄ったり、
レンダリング、VRchatのセットアップ等で使用したいと思っているんですが、
これらの機能はプログラミングの知識がないとできないですか?
またこれらの機能を学習するにはどの書籍を購入すればいいでしょうか?
あとUnityは3つライセンスありますが、
どのライセンスでもPencilなどのプラグインは使用できるんでしょうか? >>916
ここは基本的に初心者に毛が生えたワナビが初心者にマウント取って楽しむ場所だから質問するには適切じゃないよ
3D関係のスレやTwitterで似たような分野をやってる人を探して情報を漁ってみたりリプ飛ばして聞いてみるのがおすすめ >>916
プログラムの知識ないとできないです。
知識を得ることはできます。自主勉強ね。
プラグインはその製作者に聞いてください。 オブジェクトを移動させたいとき、
これだと瞬間移動になってしまうのですが、
何秒間かかけて移動させたいときはどうすればいいのでしょうか?
よろしくお願いします
Transform cameraTrans = GameObject.Find("オブジェクト").transform;
Vector3 pos = cameraTrans.position;
pos.x = pos.x + 10f;
pos.y = pos.y + 10f;
pos.z = pos.z + 0f;
cameraTrans.position = pos; >>919
Vector3 pos = cameraTrans.position;
pos.x = pos.x + ax × time.deltaTime;
pos.y = pos.y + ax × time.deltaTime;
pos.z = pos.z + ax × time.deltaTime;
axの値を大きくすると早くなり、小さくすると遅くなる。
translate等、他にもある。 >>919
毎フレーム『新しい位置=現在の位置+速度×経過時間』を行う
目的地と所要時間が決まってるならDOTweenみたいなTweenライブラリ使うと楽だよ public class AlphaScript : MonoBehaviour {
public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
{
if (enable)
{
canvasGroup.alpha = 1;
canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
}
else
{
canvasGroup.alpha = 0;
canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
}
}
}
このスクリプトに対して4行目 if (enable) を他スクリプトから変えるには
どのような書き方をすれば良いのでしょうか 宜しくお願いします 変えるんじゃなくelse文の方を実行させるには
別のスクリプトでどうやって書けば良いのでしょうか? GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false ); >>926 様
通りました!速レスありがとうございます! 通ったけど(VSでは)実行するとNullReferenceExceptionエラーになります
>>926 SetCanvasGroupEnable(null, false); なので、
>>923 (CanvasGroup canvasGroup, bool enable) のcanvasGroupが
nullになってしまってるからですよね? 引き続き回答待ちます
>>923 >>925 です 第一引数に何を書いたら良いか判りません
宜しくお願い致します 外から呼ぶのにコンポーネント要るとか二度手間じゃね?
canvasGroupはAlphaScriptのAwakeででも取得してboolだけにしろよ
てかコピペだけして中身の意味が分からないとか最悪じゃねえか
何してんだ一体? 二度手間とかどうでもいいです ソースの意味はわかってます
サイトで便利ってあったから使ってみたいんですよ
>>926 GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
は"からかわれた"でいいんですよね? では↑の一時引数には何と書けばよいのですか? からかわれた訳じゃなくてそれもひとつのやり方として正解
意味が分かってるならnullの代わりは何だか分かるだろ? nullの代わり...皆、なかなか答え出してくれませんねw
でも今まで浮かばなかった検索候補、調べてきまーす 答自分で書いてるし、メソッドの意味が分かってない以上無駄やな
正直に全然意味が分からないと言えば、929あたりが教えてくれたかもなあ すげえ意地悪だね? ずっと
public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
の「CanvasGroup canvasGroup, に対しての書き方が解らない」って言ってるでしょ?
ここ初心者スレじゃないの?なのになんで皆質問を質問で返したり
回りくどいヤな言い方しかしないワケ?
nullの代わりなんか解らんし見つからなかったよ。質問文見りゃどの程度かくらいわかるでしょ 質問自体がおかしいなら どこがどう考え方が間違ってる とか、
こういうサイトのこの部分を勉強しろとか言ってくれてもいいじゃない >>937
質問したら礼ぐらいしてから次の質問したらどうですか?
常識ないんですか?
わざとやってるんですか? >>939 あなたこそわざとやってるのですか?
自分に対するレスはどれも回りくどく、どれも正解を書いていない
馬鹿にするレスもある。教えてくれたと思ったレスには>>927
ちゃんとお礼言ってるが、それに対して >>929 この返信
自分が非礼だと言うのなら、>>923 以降でどのレスが気に入らなかったのか
言ってくださいよ 落ち着け。
回答者の言葉尻を捉えて腹立てるんじゃない。教えてほしいから聞いてるんだろ、華麗にスルーしなさい。どこもこんな人達はいっぱいいるよ。
あと、分かってるなら答えがわかるはず、と分かってるけどnullは分からない、は完全にすれ違ってるの。
どう違ってるか改めて真摯に聞いてみなさい。
まずは自分がどう考えているかでも辻褄が合ってないところ、そういう説明がないと明確に答えられないし、面白がってヤジが群がるぞ。 >>940
おいおいおいw
>929の返信は失礼な要素ないと思うが? ...取り乱しました。>>941 様
まずUIなどを階層に収めた"オブジェクトA"を作りました。
これをAlpaを使って表示/非表示にするテストを行いたく、AlphaScript(拾い物コピペ)を
"オブジェクトA"にアタッチしました。
さて、作っているアプリを動かすメインスクリプトをアタッチした"オブジェクトMain"
があります。ここから"オブジェクトA"のAlphaScriptにアクセスし、"オブジェクトA"の子であるUI
なども一緒に透過されるかテストしてみたいのです。しかし困った事に
>>926 >>928
GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
このソースの"null"の部分、"null"ではエラーが起こってしまう、でも自分は
"null”以外にスクリプトエディタに怒られない文字列を知らない。
"null"の意味は知ってるが、じゃあ代わりに第一引数にどんなワードを入れたら良いのか
解らない。教えていただけませんか?と、ずっと言っております。
自分はunity初心者で、教本も"Unity5の教科書"を一通りやった程度で、
C#の本については購入検討中です。高いし。
なので、経験者の皆様には言っている事がまるでおかしいかのかもしれませんが、
解る方おられましたらどうか宜しくお願い致します ソースの意味はわかっています( ・`ω・´)キリッ 自分は単純に"オブジェクトA"の"AlphaScript"に「false」を伝えたいのですが、
GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
ではスクリプト自体がnullになってしまう。でもその代わりを知らない。
そもそもCanvasGroup canvasGroup,自体はいじる必要が無い。
この後の bool enable をfalseにしたいだけなのに、
Ascript.SetCanvasGroupEnable(ここ,false);
ここに何か入れなきゃならないようです。falseだけにしたら
SetCanvasGroupEnableがアカンって怒られるし...この場合、どういった記入を
したら良いのでしょう? canvasGroupはGameObject.FindObjectOfType< CanvasGroup >()で取ってこれないのか >>946 様
有難うございます。オブジェクトMainに
MainGameObject.FindObjectOfType<CanvasGroup>().alpha = 0;と書いた所
Gameシーン上で透過されるのを確認しました。
しかし、勿論これは良いのですが、AlphaScriptはなんの働きもしてませんよね?
後々いじるのに便利そうなので、使ってみたいのです。となると、単純な疑問が
浮かんできます
A public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
このスクリプトAに対し
B FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(num,false);FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(「ここ」,false);
Bの「ここ」は、何と書いたらVSに怒られず通るのでしょうか。 >>948 の訂正 すみません、ミスしたので訂正させて下さい
>>946 様
有難うございます。オブジェクトMainに
MainGameObject.FindObjectOfType<CanvasGroup>().alpha = 0;と書いた所
Gameシーン上で透過されるのを確認しました。
しかし、勿論これは良いのですが、AlphaScriptはなんの働きもしてませんよね?
後々いじるのに便利そうなので、使ってみたいのです。となると、単純な疑問が
浮かんできます
A public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
このスクリプトAに対し
B FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(「ここ」,false);
Bの「ここ」は、何と書いたらVSに怒られず通るのでしょうか。 >>949
「ここ」には、CanvasG roup型を入れる。
いやー参った。こんな型宣言して使ったことなかったから調べるだけでも精一杯w
まぁ知らなくても3Dのシューティング作れたしw
とりあえず動いたので多分あってるんじゃないかなぁ、間違ってたらすまん。 >>950 様
最後の行 my_script.SetCanvasGroupEnable(hoge); がVSに認識されませんでした
が、自分のスクリプトに入れただけなのでミスがあるかもしれません。
後日新しいスクリプトファイルで勉強させて頂きます。有難うございました!
>>951 様
SetCanvasGroupEnable(CanvasGroup, false);
ではVSに怒られてしまいました。しかしそちらで動いているのならば、
こっちがおかしいのだと思います。わざわざ遅い時間まで有難うございました!
>>こんな型宣言して使ったことなかったから調べるだけでも精一杯
この言葉がありがたかったです。それにより「なぜそんな二度手間をする?」
の意味がわかった気もします。
そして>>941 様
有難うございました >>950様
新規csファイルで確認しましたが、VSは通してくれたものの、Unityはnullエラーを
返してきましたので報告させていただきます。以下は自分の解釈を付けたものです
//A_アクセスされる側のcs.目的は自身のアルファ値を0か1にする事だけに絞ってます
public class NewBehaviourScript : MonoBehaviour {
private CanvasGroup canvasGroup;
void Start () {
canvasGroup = GetComponent<CanvasGroup>();
}
public void SetCanvasGroupEnable(bool enable)//変数"enable"をbool値(省略ではtrue)で作成
//>>950さんは(「ここ」,false);が解らないなら最初から設定すんなって事を言ってるのだと解釈。
{
if (enable)//enable==turueであれば //以下の処理
{
canvasGroup.alpha = 1;
}
else//そうでなければ //以下の処理
{
canvasGroup.alpha = 0;
}
}
}
---------------- ----------------
//B_アクセスする側のcs
public class NewBehaviourScript1 : MonoBehaviour {
public bool hoge = false;//bool値 hoge にfalseを代入
private NewBehaviourScript my_script;//my_scriptにNewBehaviourScript.csの"形"を代入。宣言?でいいのかな
void Start () {
my_script = GetComponent<NewBehaviourScript>();//my_scriptにNewBehaviourScriptクラスをを代入
//以下↓のようにmy_script.SetCanvasGroupEnable();と言うようにアクセスする事が出来る
}
void Update () {
my_script.SetCanvasGroupEnable(hoge);//hoge==false のはず...しかしここでnullエラーを返される
}
}
と言った結果でした。
とりあえずC#の教本は買おうと思います >>954
ちな、最後にnullエラーと書いてるけど、合ってる?
alpha値でエラー出てるとかじゃないよね? おまいら受け渡しの型くらいあ合わせろ!てかここはおら弟子が楽しむためのスレなんだからな! >>955 >>956 様
どうもわざわざすみません今レス見たもので
調べさせて頂きます。結果等はまた書き込みさせて頂きます >>956 様
前回>>953 用意した物
・スプライトから作った"オブジェクトA"
・UI_Image で作成した"Canvas".中には画像確認用にImageから画像を読み込んだオブジェクト
これにCanvasGroupコンポーネントを入れて、alpha値が正常に動くのを確認
オブジェクトA・・・NewBehaviourScript1(アクセスする側)"Hogeにチェック"
Canvas・・・NewBehaviourScript(アクセスされる側)をアタッチ
実行→ NullReferenceException: Object reference not set to an instance of an object
NewBehaviourScript1.Update () (at Assets/NewBehaviourScript1.cs:20)
箇所は
void Update()
{
my_script.SetCanvasGroupEnable(hoge);
}
今回>>955 用意した物
NewBehaviourScript NewBehaviourScript1・・・それぞれ>>955 yVRgjts.png
に書き換えたもの
前回に続き"Canvas"・・・NewBehaviourScript1(アクセスする側)
動画を参考に前回の"オブジェクトA"は削除。"canvas2"を作成してそこにButtonを配置。
これにNewBehaviourScript(アクセスされる側)をアタッチ。ターゲットは"Canvas"
こちらは何度か失敗しましたが、自分のソースミスが原因だと解り修正後動作しました!
>>953はレスが頂けるとは思わず「ちゃんと聞いてるぞ!」という姿勢を見せたつもりだった
のですが、そのせいで余計な手間をかかせてしまって本当申し訳ありません。
動画まで用意して頂いて...しかしその動画が実に参考になりました。有難うございます >>926 >>929 様
自分はあなたのレスに悪意を感じたが為>>930のような態度を取ってしまいました
しかし今回の件で「まさかそこまでの初心者が来る訳無いだろう」という
考えもあると気付いたつもりです。まだ完全に理解は出来てませんが、他の方が言う
様に答えを提示されて下さったのだと思います。申し訳ありませんでした >>960
そもそものきっかけはあなたの「ソースは理解してる」
あなたが理解してるのはソースじゃなくて結果だけ
コピペしてきたソースを理解していたら簡潔なレスでも問題点を理解できていた ここからは談笑で行きませんか
自分はしょぼい程度ですがFlashのActionScriptを今まで使ってたんですよ
だからUnityのC#を見た時、どういう処理をしているのかはだいたい理解出来た
でもFlashとUnityのアプリの作り方はまるで違う様に感じました
多分C#よりもUnityの仕組みの方が理解できてないのだと思うけど...どうでしょうか
そういった感覚で初心者用教本を1冊読み終え、まずは自作したFlash作品をUnityに
移植しようと思って制作してたのですが...ここで質問してまるで話が通じない!
初心者スレで初心者が質問しているのに皆が皆でよってたかって質問で返して来る GetComponentはthis.GetComponentだから自分自身からしか探せないんやが
外部にアタッチされたコンポーネントは>955みたいな書き方になる
これはチュートリアルのインターミディエイト/エキスパートで順次出来てきた筈
薮蛇だから何も言わないけど相手の理解力からレベルはほぼ一瞬全てバレるので
あまり無駄な事はしない方がいいよ またsage忘れてしまった
Unity初心者の自分から見たら皆さん中級者以上ですよ
テンプレには初心者が初心者に答えるスレって書いてあるのに
ここではある程度理解していないと嘲笑のネタになるのだと感じたワケです
教えてくれない、逆に試される。初心者からしたらそういう態度取られるのは
「この人達、教えてくれないのになんでここにいるの?」て思いますよ
勿論教えて厨的な初心者もいますから、千引きは難しい所だと思いますけどね。 ここは元は荒らしが勝手に立てたスレだった筈
まぁC/C++系に比べたら全然温いとはいえ、分からなければ
書かなくていいみたいな所はある
元々プログラム系ってそういうもんで、初心者を引き上げようとか
そういう考えはないから、頑張って戦塵の谷を登ってくるしかないんじゃね?
まぁデバッガ使えるようになると自前でほぼ何でも解決出来るようになるから
そのあたりから始めてみたら楽しくなってくんじゃね? >>965
すごく興味深いです
ここで叩きのめされてなぜなのか?と調べたら専門系程その傾向にあるそうですね
初心者を引き上げよう...などと想う自分の考えは所詮甘えの範疇、本当に好きな奴
だけ上がって来れる世界と言うワケですね、成る程。
じゃUnityの「初心者でも作れる!!」ってのは...解ります。この難解さですもん
でもUnityはイラつくけど楽しいです。
デバッガ>>昔海外のエロゲを割ろうとして手を出しましたがまぁ〜あ土台無理でした!! テストでいい点取りたいとかいい大学に入りたきゃ勝手に勉強しなさい
みたいなもんなかな? 結局眼前にぶら下がってる人参は自分のエゴだしね
俺もC++やってた時、なんだこれチンプンカンプンじゃねえかと思ってたんやが、
それはIDEは唯の便利なインテリセンス付きの便利なエディタだと思ってたからで
3割も使ってなかっただけ
デバッガでステップ実行すれば複雑なソースも理解出来るようになるし、
理解できなくても何がどう動くのかは分かる
デバッガ嘘つかないっつーか、エラーコード調べりゃ解決の糸口分かるし、
人間様よりよっぽど素直で賢い dllで隠蔽されてなければソース掘れるしな
ソースあるならリファレンスいらんのよアレ 5chに期待するよりもアセットを買えば解決すると思いました アルファ付きのテクスチャを使用し、マテリアルのレンダリングモードをtransparentにすると
うっすら白いメッシュが見えてしまうのですが解決方法はありますか?
ちなみにテクスチャ側のalpha is transparentにはチェックを入れています。
また、まつ毛のテクスチャなんですが、レンダリングモードがcutoutだと先端の半透明部分的が消えてしまうのでtransparentが惜しいんですが… つまりデフォルトのシェーダーではそういう仕様ということでしょうか?
自分で作れば解決するのであれば調べてみます。 オブジェクトの移動について調べると、このコードで
等速で座標(1, 0, 0)から(10, 10, 10)まで動かせるらしいのですが、
Vector3.MoveTowards(new Vector3(1, 0, 0), new Vector3(10, 10, 10), Time.deltaTime);
例えば移動時間が3秒の場合は
Time.deltaTimeのところにはどういう風に書けばいいのでしょうか?
よろしくお願いします 大前提として1フレームをだいたい0.02秒と考えて、
3秒は150フレームだから、
移動元から移動先を直線にした距離(だいたい10ww)
それを150で割った値を指定すればだいたい3秒でゴールに到着するだろ
結論
ていうか距離が変わってもとにかくどこへでもトータル3秒で移動させるとかそういうためのものじゃない
一定の移動速度で動かしたいだけのものでしょそれ >>974
var duration = 3.0f;
var a = new Vector3(1, 0, 0);
var b = new Vector3(10, 10, 10 );
var distance = (b - a).magnitude;
var speed = distance / duration;
var step = speed * Time.deltaTime;
Vector3.MoveTowards( a, b, step ); >>977
ありがとうございます
var duration = 3.0f;
var a = new Vector3(1, 0, 0);
var b = new Vector3(10, 10, 10 );
var distance = (b - a).magnitude;
var speed = distance / duration;
var step = speed * Time.deltaTime;
Vector3.MoveTowards( a, b, step );
を書いて実行してみたのですが、動きませんでした
このまま書くだけではだめなのでしょうか?
また、秒数指定よりも速度指定の方が簡単なのであれば
速度はどのように書けばいいのでしょうか? >>979
そりゃあTime.deltaTimeのところをどう書いたらいいかって質問への回答だから、もちろんこのまま貼り付けても期待通りには動かんよ。
Vector3 current = new Vector3( 1, 0, 0 );
Vector3 target = new Vector3( 10, 10, 10 );
float duration = 3.0f;
float speed;
void Start()
{
this.speed = (this.target - this.current).magnitude / this.duration;
}
void Update()
{
this.current = Vector3.MoveTowards( this.current, this.target, this.speed * Time.deltaTime );
this.transform.position = this.current;
}
Vector3.MoveTowardsのリファレンスちゃんと読んでる? >>981
ありがとうございます
ボタンを押したらオブジェクトが動くようにしたいのですが、
エラーがいくつも出てる状態なので、
リファレンスなども参考にして直していこうと思います 初心者あるある
初心者なので何から学んでいいかわからない。 入門サイトでも覗いて、まんま作ってみたらいいんじゃないかな。 http://tutorial.unity3d.jp/
ここのチュートリアルを両方作ってみる
作り終わる頃には自分の作りたいゲームをどのようにして作るのか見えてくるはず
作りたいゲームが無いけどゲームプログラムを学びたいなら既存のゲームを目コピして自分で再現してみる Animatorを使わずにスクリプトでAnimationを直接制御したときの挙動について質問です
Animation.stopでクリップを停止したときに初期状態(0フレーム目の状態)に戻したいのですが、一時停止のような挙動になります
パラメータ保持しておいて手動で引き戻す以外にスマートな方法はありますか? スクリプトを作った時に最初から付いてるコメントを出なくする方法教えてください
startとupdateのやつ UNITY社からセキュリティーのメールが来ましたが
英語のページなので日本人は関係無いですよね? アニメーションのアセットいっぱいあるのにエロがない…
セックスアニメーションのアセットが欲しいんじゃー タブレットでプレイストアで自分のアプリを見ると、
「このアプリはお使いの端末に最適化されません」って出て
(スマホでは出ません)
タブレットでアプリを起動すると、タブレットの方が高画質のはずなのに
スマホの時よりも画面が少し荒く、動きがぎこちない感じになってしまいます。
タブレット用に最適化するにはどうしたらいいのでしょうか? >>992
お持ちのスマホの型番とOSのバージョン
お持ちのタブレットの型番とOSのバージョンをお知らせ頂かないと答えようが無いかと 質問の仕方が悪いと答えようが無いときもあるよね。
あと >>992 はキャッシュクリアするとなおることがあるよ。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 282日 11時間 34分 15秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。