>>1 乙です。 2Dでプレイヤーが歩行しているアニメーションクリップを作っています アニメーションウインドウを開いて、歩行アニメは7コマ分画像あるので画像を7つセットしていきます。 アニメが再生されてなぜか6枚目の画像になった時だけ画面に表示されなくて、プレイヤーはいっしゅん透明になります そして7枚目になると再び表示されます 7枚の画像はファイル形式、タテ・ヨコのピクセルもピボットも全部統一してあって、アニメーションウインドウにはこの6枚目もちゃんと表示されているのにSceneやGame上ではこの6枚目だけ表示されません どういった理由が考えられるのでしょうか? オーダーインレイヤー上げたら(なんで6枚目だけが下になるかはわからないけど)直りました すみません
FBXファイルにテクスチャを貼り付けたいんだけどどうしたらいい? houdini側ではちゃんと貼られてたのに、Unity側でテクスチャとFBXをどうやって結びつけるかわからない 適当にドラッグアンドドロップすると gun_aluminum というマテリアルを使わずに適当なマテリアルが生成されて差し替わってしまう 初心者です VRoidでベース作り→blenderで服改造→Unityで髪とスカートのひらひらや当たり判定をつけてVRMでエクスポート というところまでいき、VRoid Hubにアップしたらスカートが片方だけ尋常ではないくらいめくれ上がっていました 何か考えられる原因はありますでしょうか? ボーンやウェイトはVRoidで最初から設定されている時のままいじってません
>>9 スケール弄ったらそんなこと起きた記憶 ポリゴンだけ縮小→当たり判定はデカいまま→暴走 どっかの変換でスケール変わってない? テストプレイ中、GameタブでScaleを変えた際に拡大箇所はスクロールできないのでしょうか?
public の配列Y_lineを作成し、この配列のelementはy座標を意味するので インスペクターにこの配列を表示した際、表示される順をこの配列だけは降順にしたほうがわかりやすいのでそうしたいのですができないでしょうか?
ParticleSystemのRenderのRenderModeをMeshにして複数登録すると、複数のメッシュを表示してくれますが、どうもランダムな順番で表示されるっぽいです アニメーションみたいな感じにしたいので順番を指定したいのですが、どうすればできますか?
メッシュを差し替えるスクリプト制御でやりたい事は出来ましたが、もっと軽い方法がありましたらお願いします
コルーチンを使って、フラグが上がるまで処理を止めておく事はできないでしょうか? テキスト送りが終了するまでコルーチンの中で止めておきたいのですが。
>>17 どういう処理を書いてるかにもよる いちばん簡単なのはコルーチンの中に while(フラグ) { Yield return null; } こう書いておけば、フラグが変わったときにwhileから抜ける コルーチンで判定するまでループは自分も使うことあるんだけど 無限ループ=フリーズのイメージがあって こんな使い方しても大丈夫なんかな?ってふと思ったりする
それはコルーチンの動作理解してないから理解したほうがいい
どうもありがとうございます。 無事にコルーチンを作ることが出来ました! 何かの不具合でフラグが立たなかった時の為にupdate関数で時間を計測して、 while文の中にif文を作って時間が経ったらbreakで抜けるようにしておいた方がいいでしょうか? それと右クリックするまでコルーチンの中で止めておく処理を作りたい場合 private void Update() { 右クリックフラグ = false; if (Input.GetMouseButtonDown(0)) { 右クリックフラグ = true; } } IEnumerator コルーチン関数() { while (右クリックフラグ == false) //右クリックが押されると下に抜ける { yield return null; } } このように書いて、コルーチンの中で何回も止めても大丈夫なのでしょうか?
>>23 別にいいけど、その設計は目的がよく分からない それなら最初からコルーチンじゃなくてUpdateの中でやるか、それとも異なる処理を順番にやりたいならその分だけコルーチンを分けて作って一つずつ順番に動かして行ったほうがいい そもそも非同期でなくてもいいようにも見えるし、非同期の意味が分かってないなら一度自分が何をしているのか分かるようになるまで調べたほうがいい それとwhileのカッコ内はtrueのとき繰り返すから逆な気がする それと時間計測して強制的にbreakしたいならそのループ内で計測した方がいい コルーチンが終わってもUpdateで無駄な測定をする必要はない
updateがいやならunirxを使うと幸せになれるぞ
>>24 どうもありがとうございます。 今書いているコードはUdemyの教材で、ターン性バトルのテキストが敵味方交互に表示されるもので 自動でテキストが流れてしまうので、コルーチンの中を編集してみて治せないか試していたところです。 時間計測というのはUpdate関数の中で、Time.deltaTime を使ってやるという認識だったのですが、 コルーチン関数の中のwhile文の中で同じような事が出来るのでしょうか? その場合どのようなコードを記述すると時間計測ができるのでしょうか? >>27 Time.deltaTimeをコルーチンの中でできるかどうかを質問するよりもスクリプトに書いた方が早かったんじゃないか? IEnumerator コルーチン() { float timer=0; while(true) { yield return null; timer += Time.deltaTime; Debug.Log(timer); }} 教材でどう勉強するかは余計なお節介だと思うけど、教材を改造して理解するよりゼロから教材のプログラムに似せて作るとか自分の作りたいゲームを作る方にシフトした方が楽しいと思うぞ >>28 どうも有難うございます! update関数を使わなくてもコルーチンの中だけで時間計測ができました! 貴重なアドバイスをどうもありがとうございます。これから頑張りたいと思います。 >>27 良ければその教材教えてくれませんか? 自分まだUnity勉強し始めでUnityの教科書の次の教材を探しております 教科書なんて読むな!捨てろ! いきなり1本作るのが最短の習得法だって云ってんだろ!?
youtubeでunityで検索すればゲーム作成講座の動画出てくるから教材買わなくても、それ見れば基本はわかるよ。 動画見て知らない単語はググればある程度理解はできる。
Unity ゲーム開発:インディーゲームクリエイターが教える C#の基礎からゲームリリースまで【スタジオしまづ】 と言う教材ですが始めたての学習で適当かどうかわかりません。 セールの時に1700円くらいになるけど最初はyoutubeの無料動画がいいと思います。
int型の引数を設定して、0は右のボタン、1は真ん中のボタン、2は左のボタン という感じで数字をインスペクタから入力して設定する事があると思いますが 引数を列挙型にした方が分かりやすいと思い、列挙型を作って引数に設定すると、 Event Triggerで設定する候補から関数が消えて設定できなくなってしまいます。 どうして列挙型を引数にした関数はEvent Triggerに設定できないのでしょうか?
>>35 理由はわかんないけどunity側の仕様でUnityEventにenumは渡せない 回りくどいけどenumを設定するためだけのクラスを作って引数に指定すればつかえる >>36 質問者ではないけど マ?と思ってやってみたらできなかったどうやるんだ? public void OnClick(SerializableClass s){} [SerializeField] UnityEvent onClick; これだと候補にすら出てこない [SerializeField] UnityEvent<SerializableClass> onClick; こうしたら候補に出てきてアタッチもできるがインスペクタから引数を入力することはできなかった 普通のC#でもEventには幾つか情報が入ってて pointerの座標や何クリックなのかや何から呼ばれたのかとか データが入ってる場合がある UnityでもEventDataから押したGameObject.nameが取得出来るようだ
どうしても操作キャラがリアルに動かない いかにもカーソルが動いてる感じ もっと重厚感ある人間味な動きにしたい MGS5の操作感にするにはどれだけスクリプト組めばいいんだか
加速や旋回で凄く人間味のある動きに出来るアセットあったな 設定が難しいらしいけど
rigidbody2D.addForceでオブジェクトを動かしています。このオブジェクトのfreezeRotation.Z軸は固定しない仕様です addforce(transform.up・・・で真上にジャンプさせようとした時に、オブジェクトが回転してて横向いてる時は斜めに飛んでしまいます オブジェクトのrotatinのZ軸の向きに関係なく、addforceは画面に対しての方向でさせたいのですがどうすればいいのでしょうか
>>41 transform.upをVector2.upにしたらたぶんいける 前者はローカル座標、後者はワールド座標 SimCityのような都市開発シミュレーションゲームを 作りたいのですが、下記画像のようにGUIからアイテムを選択して ワールド上に配置する方法を解説されたサイト、 またはチュートリアル動画ってご存知無いでしょうか… 参考画像 https://imgur.com/a/hwqF2yS ビルドしてみようと思ってEDIT > External Toolsを開くと You are missing the recommended JDK. Install the recommended version using UnityHub. というのが表示されているので、検索したらUnityHub>モジュールを加えるからJDKを入れろと言うようなことが書いてあるのですが Unity2020.0.30f1を使っているのでそれをUnityHubでみても以下3つともちゃんと「インストール済み」と表示されてて入れてあるのですがどうすればいいのでしょうか ・Android Build Support ・Android SDK & NDK Tools ・OpenJDK
英語圏でもgodotよりunityの情報量が多いのですかね?
>>45 一度その3つチェック外して入れ直してみ それで治るから ゲーム作ってるとスクリプトが10個20個と思ったより増えてしまいます どれとどれが参照や関連してるとかだんだんわからなくなってきます みなさんどうやってるんでしょうか
いくつかエディタのバージョンは入れてて、今回また新しいバージョンのエディタをインストールしようとしたら、途中で failed to delete old unity android support instaliation files. mayby unity or some of its tools are stiill running みたいなダイアログが英語で表示されたのですが、どのファイルのことを言っているのかわからないし、 再試行してもダメそうなのでとりあえず無視してインストール自体はしたのですが、どうすればいいのでしょうか?
>>48 自分でフォルダ分けしろ ステージのスクリプトとキャラクターのスクリプトとって分けてけ unity初心者なんですけど、キャラの移動はrigidにaddforceしています しかし、物理と任意の操作を組み合わせると重くなるのではないでしょうか? 前後左右への移動はキー操作で行う 落下は物理に任せる 落下もスクリプトでコントロールしたほうがかるそうですね であれば、rigidにこだわる必要もないなと
Sceneビューで拡大して動いている間の当たり判定を見たいのですが対象が動いている場合、画面の外に行っちゃうのですが 対象のオブジェクトを常にビューの中心に追随してくれるモードとかないんでしょうか?
インストールしたんですけど 起動したらライセンスエラーって出て hubの方で何度ライセンス取得しても起動してくれません サイトの方でアカウント見たらunity personalが有効化されてないって出てます どうすればいいんでしょう
ScriptableObjectって変数名(シンボル)変えただけでInspectorから設定した値全部消えるんですけど、こんなデリケートで保守性皆無のファイルってデータベース的に使う事を想定されてないんでしょうか? 結局jsonしか選択肢がない気がするんですけど、なにか勘違いしてるところありますか?
>>51 rigidの中身はスクリプトだよ もともと用意されてるものを使うか 自分でイチから書くかの違いだよ 当たり判定にしろ地面移動にしろ細かい計算が必要になるわけで自分で書くことはおすすめしないよ 物理を使わない移動ということは マス目移動とかシューティングゲームみたいな話になってくるよ アクションゲームならrigidいるよ どちらにしろ物理は毎回計算してるわけで制御がどこにあろうと変わらないよ これがないと接触の判定も壁あたりの判定もできないよ addForceより厳密にコントロールしたいならvelocityを使うといいよ >>56 ありがとうございます。面倒ですが定数的に保持することにしました Update内で任意の範囲にコライダーがあるかどうかを調べる方法をお願いします 任意の範囲がコライダーの中に完全に埋まってるとRaycastやSphereCastAllが反応しないので... MeshColliderのConvexをオンにすれば反応してくれますが、それではMeshColliderの物理判定がガバガバになってしまうのでダメでした
すみませんunityでこういう症状がでた場合って何が原因か検討つきませんか? VIDEO unityHUB経由で入れたSDKのバージョンってどこで見れるんでしょうか AndroidStudioでもSDKマネージャー見当たらなくなってよくわからなくなりました
ワールド上に道路を作成したいのですが、 プレイヤー(ゲーム内)画面上で編集できるツールって存在しますか? ストアを探してもどれも拡張エディターで作用するものばかりで…
マイクラレベルなら アセットなどなくても 建築要素20行くらいで作れたけどな
おしえてください! Unityインストールしたんですけど、 ツールバーのアイコン(再生とか)がまったく表示されません。 直す方法はありますでしょうか?
スクリプト内でpublic等にした、インスペクターに表示されてる変数を、#regionやListの変数みたいに自在に省略、表示する方法ってありますか?
こんな画面になっちゃってまして困っています。 3Dゲームにおいて、装備品の色合い変更をある程度プレイヤーが行えるようにしたいのですが、 マテリアルを複数割り当てると処理が重くなるという事らしいので、 今後オンラインマルチプレイも実装するため何とか少ないマテリアルで実現しようと考えています しかし、良い方法が分からず困っています 色彩パターンごとにオブジェクトを用意する事も考えたのですが、着色箇所が5つもあると極基本的な色味パターン8種(三原色+混ざり+白黒)で3万3千弱通りになるため現実的ではなく 合う色合いだけに限定しても相当数になるため現実的ではありません かと言って5つ全て(実際はもっと多く)にマテリアルを割り当てると重くなってしまいます 2〜3くらいなら気にしなくてよいとあってのでその数に抑えた上で色変更を可能にしたいのですが、 そうするとカラーパレットとして作った画像ファイルにUV展開で着色する事になり、 結局色パターンごとにオブジェクト作成が必要になります そもそもなのですが、キャラエディット機能を実装しているため各パーツごとに個別にマテリアルが割り当てられており、 特に頭部は透過テクスチャを4つ重ねて表示しており、全身合わせるとそれこそ1キャラクターに20以上はマテリアルを使う事になるのですが、 これがオンラインマルチプレイでどこまで影響するか分かりません 何か良い知恵があれば教えてください
>>70 情報ありがとうございます。 早速利用してみます。 再生中にシェーダーのパラメータを変える事で マテリアルのインスタンスが作られて個別に色変えられるのは御存じ? 色変えるのにマテリアルアセット何個も用意する必要ないよ、 よっぽど色見にこだわりがある場合覗いて
>>72 色変えた時点で個別にドローコール走るっぽいよ Sharedかそうでないかによるんでなかったっけ? 知らんけど
SRPで6マテリアル60fpsくらいからアトラス化&1マテリアル化で 120fpsくらいまで簡単に上がったことがあるので 無駄に増やすより工夫して減らす方向の方がいいとは思う
エディタ中のSceneやGame上では正常にマテリアルが表示されてるのに、テストプレイをすると大分変わってしまいます(氷の青白いマテリアルがタールのような真っ黒のマテリアルになる) 別のシーンではテストプレイをしても正常に表示され、カメラ、PostProcessing、DirectionalLight、対象オブジェクトをそれぞれのシーンで入れ換えてテストプレイしてみましたが、それらには問題は無く、どうやらシーンそのものに問題がありそうですが、シーンのどの辺を探るべきか分かりません
シーンそのものではなく、シーンを切り替えるとマテリアルが正常に表示されない様です どこを直せば良いのでしょうか... シーンの切り替えは普通にSceneManager.LoadSceneでやってます
シーンを切り替えた後に新しくオブジェクトを生成してもこの現象が起きます シーンの切り替えをせずに生成すると正常に表示されます
>>76 > Directional Light まさかこれの影で真っ黒になってるだけってことはないよな? >>79 同じ状況(カメラの角度とかその他諸々)でもシーンを跨いだか否かによって表示が違うので、DirectionalLightでは無いと思います 環境光じゃね? window - rendering - lightingのenvironment - environment lightingのsourceをcolorにしてみたら
初めてunityを使うんですが、おすすめのunityの勉強法は何でしょうか?
UNITYでダークソウルみたいな3Dゲームアクション作るとして 自分の剣攻撃が敵に当たった時の判定ってどんなふうにとるのが一般的でしょうか?
5億回挟まれてるってピン刺してんのに引かないゴミカスとやんのマジでおもんねぇ
>>87 剣のオブジェクト事態にコライダつける感じでしょうか? それとも攻撃時に攻撃判定専用のオブジェクトを発生させるんでしょうか? そのマップ全体に敵オブジェクトを配置してて、プレイヤーが近づいたときだけ敵オブジェクト(スクリプトのupdateメソッド)を動くようにしたいのですが、 コレはなんかカンタンな仕組みってあったりするのでしょうか?
>>84 Unity公式のゲーム制作アセット(2Dと3D両方有り)があるからそれのサンプルゲームをいろいろいじくってみるといい >>89 単純な切り替えならステートパターンが楽 コード書くの苦手ならboltのステートグラフを利用するといい もっと複雑なのが欲しくなったら ビヘイビアツリー switchでステートかくのはおすすめしない インターフェースか継承でやった方が楽
と思ったけど 外からどの状態でも呼び出せるようにするって意味なのか…?
ステートマシンは状態の推移/管理がキモじゃなくて、 状態ごとにクラスが独立してパーティションのようになっていることに意味があると思う ステートを手続きなしでまたげるならバグりそう
>>92-93 ありがとうございます それぞれのupdate関数内でplayerとの距離を計算して近かったら状態を切り替えるというふうにするということでしょうか 仮にobjectの数1000くらいあってもコレくらいならいけますかね >>90 >>91 分かりました ありがとうございます その通りにさせて頂きます アプリをリリースする時、利用規約は必ず必要なのでしょうか? 自分で作る場合はホームページを作って書けばいいのでしょうか?
CC0やPublic Domainでいんじゃね? ないんだよね?
>>97 普通はオブジェクトごとに視界(コライダー)を作って、 そこの範囲に入ったら追跡、 離れてから一定時間経ったら元の場所に戻るとかにすんじゃないかな 1000のオブジェクトが同時に動くって無双ゲーかオープンワールドでも作ろうとしてんの? アセット関連で質問なのですが 現在スマホ向けの3dゲームを作成しているのですが シンプルにキーボードやマウスの入力受付をスマホのバーチャルスッティクに反映させる方法はないでしょうか? 過去に自分が作成したPC用に開発したキーボードやマウスの入力受付システムを極力修正せずスマホ用に流用したいのですが何かいい方法はないでしょうか?
Oculus quest2で動くゲームを作ろうと思っているのですが サイト毎に色んな方法が書いてあり、どのサイトがいいのか分かりません オススメのサイトを教えてください
アニメコントローラーのトランジション、エントリーから一つ目の遷移 を削除もしくは他のアニメクリップに切り替る方法ありますか? エントリー以外だとアニメクリップ選択してマイナスのボタン押したら消えますが エントリーからつながってるトランジションの削除方法がわからないです よろしくお願いしますm(__)m
>>105 黄色の遷移ならデフォルトで必ず1つ存在する 他のステートをSet As Layer Default Stateして 切り替える >>106 そんなのあったんですね おかげさまで遷移切り替えできました! ほんと助かりました ありがとうございます! 超初心者です インポートしたAssetのフォルダの中に.unityファイルがあり、それをダブルクリックで開いたところ、今までヒエラルキーにあった物たちが消えて、今開いたオブジェクトだけになってしまいました これは戻せますか…?
>>108 シーン(オブジェクトの集まり)を 開いただけなので、 元々開いてたシーンを開き直せば元のものを確認できる(多分シーンファイル内の Sample Scene) >>108 それはシーン Unityは場面ごと(シーンごと)にステージを構築して(ゲームオブジェクトをヒエラルキーに置いていって)シーンを遷移させることで場面を切り替える シーンは右クリックから作れる 以前のシーンを保存していないなら、もとには戻せないかもしれない 一度セーブするか警告が出てたはず >>109 >>110 サンプルシーンを開いたら前のが出てきました! シーンというものを理解してなかったです ありがとうございました! PlatformEffector2Dで下からジャンプして乗れる床を作ったのですが、これに横から当たった場合、弾かれてしまいます。 横から当たった場合、横方向にすり抜けるようにするにはどうすればいいのでしょうか?
>>108 流石にお前そのレベルだったら自己流やネット見て独習するより本買った方がいいぞ 金使え金 初心者です。 transform.Rotate(new Vector3(0f, 20f, 0f)); でオプジェクトを回転させてから this.transform.Translate(0.00f, 0.0f, 10f); でオプジェクトを移動させると、回転した方向と連動して斜めに移動してしまいます。 見た目は回転させたままで、Z軸に合わせてまっすぐ進めるようにしたいです。どこを変更すれば解決するのでしょうか?
UEのアセットストアにあるアニメーションもUnityで使えたりすんのかな
UNITYとBrenderをつかいはじめたのですが UNITYと違いblenderはℤ軸が上、y軸が奥になってます なにか設定でUNITYと同じにできますか? こういうもんだと思って慣れるほうがいいんでしょうか?
3Dゲームでスコア表示させたいのですが、カメラ正面にペタリとテキスト表示させたくて 最初はGameManagerで void OnGUI()で GUI.TextArea();としていると思った通りの表示になったのですが Unityをバージョンアップさせるとこれが非推奨になったらしくText表示されなくなりました。 CanvasとTMPを使わないといけないらしいのですが、Canvasがカメラ角度関係なく 目の前にぴたりと表示させる方法がわかりません どのようにすればよいでしょうか? (解説サイトの案内でも歓迎です)
>>119 UnityはUnity、BlenderはBlender。Unityが常に正しい訳でもないしBlenderもちょっとしかおかしくない。そういうものとして受け入れた方が混乱しない >>120 2021のLTSが来たこの機会に最初から学んだほうが早い ヒエラルキーにCanvasを置いてRenderModeをOverlayにすればテキストも常に最前面に映る 成約はいくつかあるしTextコンポーネントもレガシーになったから使わないほうがいい スクリプトでやる場合も同様 >Overlay ありがとうございます 結構検索したんですがそんなちょっとしたことだったんですね Canvas学び直します
>>119 Unityは変更できないと思うが Blenderの出力を-Z Forward Y Up に変更できると思うぞ visual scriptingでNOT演算子が見当たらないのですが検索ワード教えていただけませんか
>>124 無い Equalにfalseを入れて代用する >>121 >>123 blenderの出力からUNITY座標にできるんですね ちょっと試してみてどっちのやり方でいくか考えてみようかと思います 参考になりました 回答ありがとうございます!