【ゲームエンジン】Unityなんでも質問スレpart1
■ このスレッドは過去ログ倉庫に格納されています
995 名前:名前は開発中のものです。 2020/01/11(土) 12:46:12.11 ID:wPvGtAaQ
敵に攻撃するとダメージが数字でポップアップされるという処理を
var pos = 対象の敵オブジェクト.GetComponent<Transform>()して、
ダメージのテキストをプレハブ化した物をInstantiate(プレハブ, pos)で生成したのですが
ダメージのプレハブが敵オブジェクトの子になっているので、敵オブジェクトのHPが0になってDestroyされた瞬間に一緒に消えてしまいます
生成するプレハブの位置を任意のゲームオブジェクトのtransformに重ねるが、子にはしないみたいな事はどうすれば出来るのでしょうか?
transformから位置(座標?)だけを取得する方法がわかれば応用が色々出来そうなのですが
997 名前:名前は開発中のものです。 2020/01/11(土) 13:08:04.10 ID:ftB0znZP
>>995
ダメージテキストのオブジェクトに、新しいスクリプトをつける。
そのスクリプトのstartに、親を放棄させるメソッドを入れる。
ググリワード
transform.parent
998 名前:名前は開発中のものです。 2020/01/11(土) 13:13:14.92 ID:GoAReVTm
>>995
Instantiateする際に
GameObject obj =Instantiate(プレハブ, pos)
これでGameObject取得できるので、その後すぐに親を外す
obj.transform.paerent =null
これで敵の子として生成した後に独立する 987名前は開発中のものです。2020/01/11(土) 03:28:33.54ID:MfNXfEnO>>990
コルーチンについて質問させてください。
void Start() {StartCoroutine(A());
}
void Update(){
Debug.Log("update");
}
IEnumerator A(){
Debug.Log("A start");
for (int i = 0; i < 10; i++)
{
Debug.Log("A:"+i);
yield return null;
}
}
とやって動かすと、ログが
A Start
A:0
start end
update
update
A:1
になるんですが、最初のUpdateのあとにコルーチンが実行されないのはどうしてですか?
990名前は開発中のものです。2020/01/11(土) 11:45:27.42ID:GoAReVTm
>>987
>最初のUpdateのあとにコルーチンが実行されないのは
最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う
これを修正するには
Update を FixedUpdate にし
yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る
UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと 初心者質問スレでlinqコードでえらい勘違いしてる奴がいてわろた
ああいうのチームにいたら苦労しそう 言っちゃ悪いけど、はたから見てたら同類にしか
とりあえず頭冷やせ >>155
見苦しいのは認めるけどあそこまで間違った知識をドヤ顔で偉そうに振りかざしてるのはちょっとアレだわ とりあえずループ一つ展開君はWhereの間にSelectManyとか挟んだらどうなるのか自論よろ >>159
よく知らんけど間違ったソース出してドヤ顔してりゃいいってことか?お前も大概だな >>158
雑談スレの方に回答書いたから見て来い
あれで理解出来なければ俺にはどうしようもないからお前の勝ちで良いよ はいはいはーい、公式ソースがまっっったく理解できませ〜ん!
オレの勝ちぃ!(ぶい)
もうこれでこの話は終わり、な? 【ゲームエンジン】Unity初心者質問スレBuild3
https://mevius.5ch.net/test/read.cgi/gamedev/1578720539/
スレ建て初めてなので何か間違ってたらごめんなさい、前スレの続きの話ってもう書き込んで良いのでしょうか? >>167
あり。
が多分おまい人の言ってることを理解してない。
・誰もforeachがネストして展開されるなんて言ってない。もともとの話はLINQ、数珠つなぎにするから下手にコード書くよりもMove extとかで多少なりパフォーマンス劣化あるよねって話
・そこで言ってるCombinePredicateはまさに自分が言ってたC#上での最適化に他ならない
・元々はLinqで数珠つなぎにしたら効率悪くない?って話で別にWhere特化の話しない。だからセレクトメニー挟んだらどうなる?って話をしてる
・最後のforeachで使うイテレーターはリストのではなくWhereのイテレータ。
まあそんな所か。自分もこれで理解できないならもうお前の理解はどうでもいいわ。けど間違った知識をドヤ顔でひけらかすのはやめてくれ え、なにこれまさかLINQの数珠繋ぎのパフォーマンスの話なの?
今時Unity4でも使ってるの?
パフォーマンス劣化てもしかしてMath関数を手書きでインラインしちゃうタイプ?
ちょっと失笑どころか爆笑なんですけど >>169
いやほんと馬鹿的外れだから黙ってれば? >>169
横からだが、大丈夫か?
Unity使ってる時点でモバイルがターゲットなんだから、少しでも軽くしたいのは当然だろ
そうじゃなくても、軽くなればそのぶん他の処理に割くことできるわけだし
Mathが〜とかアホなこと言ってるが、例えば三角関数みたいによく使うもんは今でも速度が欲しいときはテーブルで持たせたりするからな ああいや、気持ちはわかるよ
プロパティとか関数だからコスト重いよね
だから
実質メソッド呼び出しであるプロパティは使わない!
三角関数テーブルを保持!
これがオレのかんがえたさいこーのぱふぉーまんす!
などと供述しても許してやんよ(笑 今でもテーブルのが速いと思ってるアホっているのか
何も知らない時が止まってるジジイ いやいやUnityにおける三角関数ルックアップテーブルの有効性はなんかその界隈では有名な誰かが実証してたから!
CPUキャッシュとか一切考慮されてない駄コードによる結論だったけどそれでもMathf <<< LUTは証明されてる!
うわそんな無意味配列をCPUに送ってキャッシュミス誘発させるとか頭バグってるの…とか言っちゃダメ! >>151
>>142 でスプレッドシートが挙げられていたのですが否定的なご様子
他に良いものがあるというのであればぜひ教えてください >>173
シェーダーではまだ現役の手法なんだわ
ジジイですまんな >>176
>151はデータベースはMS sql やmySQL とかだと思い込んでるあふぉだからただ単にバカにしたいだけのくずだよ
ググるスプレッドは書き込み後にマクロ起動とかでデータ並べかえたり抽出したり、他のシートとリレーションしたり基本的なデータベースとして優秀
と言うことを知らない人大杉 >>181
自動で何かできるのはいいけど効率どうなのそれどの程度まで動かせるの http://tsubakit1.hateblo.jp/entry/2015/11/13/021937
のページのこのif文のコードなんですが、
いまいち意味がよくわかないので解説お願いします。
特に「isLoaded = !isLoaded」などは、検索してもほとんど出てきませんが、
一般的な構文なのでしょうか?
private bool isLoaded = false;
public void OnClick()
{
isLoaded = !isLoaded;
if (isLoaded) {
Application.LoadLevelAdditive ("Scene2");
} else {
Application.UnloadLevel ("Scene2");
Resources.UnloadUnusedAssets();
}
} >>183
!は論理否定演算子
それを代入してるだけ >>183
!は論理否定演算子
この記号が先頭に付いたら「〜ではない」のbool値が返る
bool flag = !trueなら「trueではない」としてfalseが入り
bool flag = !falseなら「falseではない」としてtrueが入る
要はフラグを反転させたいときに使う
そのコードではクリックの度にisLoadedのtrue/falseを差し替えて、実行するif文を切り替えてる >>183
そのページの例は古いので止めた方がいいかと思う
シーンマネージャー使いましょう ずっとエディタのバージョンアップしてなかったのですが、最近、2019.2.17にあげて
戸惑ってます。やり方の分かる人がいたら教えてください。
RigをもったモデルをPrefabにして配置していたとして、いくつかのRigのRotationを
変更したとします。以前のエディタだと複数のリグを選択して、Transformタブの
Revertを選択すると、選択したリグのみPrefabの状態に戻せていたのですが、これが
できなくなりました。Revertが表示されないのです。
一つずつ選択するとRevert可能ですが、対象が多いと手間です。
Editor拡張も試してみましたが、PrefabUtility.RevertPrefabInstanceを使うと
選択したリグだけでなく全体がRevertされてしまいます。
どなたか良い対応をご存じないでしょうか? 別のスクリプトのコルーチンを作動させたいのですが、うまくいきません……
Googleで調べたりしたのですが、いまいちはっきりしなかったので質問させていただきます。
playerのゲームオブジェクトから攻撃をして、Monsterのゲームオブジェクトにダメージの処理をさせたいとして、Playerのスクリプトに
Monster.GetComponent<MonsterAI>().StartCoroutine(Damege());
としたのですが、うまく動きませんでした。
MonsterAIのDamege()はpublicで宣言してあります。
別ゲームオブジェクトのコルーチンを動かすためになにかひつような宣言などございますでしょうか。 モンスターは複数?ならきちんとターゲット処理してる? >>188
うまく動かないって具体的にどう動かないか書いてくれないとわからんよ
コルーチンの使い方が間違ってないなら、考えられる可能性はコルーチンを実行してるゲームオブジェクトが非アクティブになってたりするくらいかな CS0103: The name `Damege' does not exist in the current context
と出てしまうようです。
public IEnumerator `Damege' ()
{ すみません、書いている途中で送信してしまいました。
public IEnumerator `Damege' ()
{
//実装処理
}
とMonsterAI側では定義してあります。
コルーチンを他スクリプトから呼び出す、ということが初めてなので、もしかしたら処理で足りていない部分などがありましたらご指摘いただけますと幸いです まず、それがその、スクリプトから動くか?
次に単純なスクリプトで他から動くか
次に子ルーチンが動くか
やって >>189
センドメッセージで実装できないか調べてみようと思います、ありがとうございます。
>>190
ターゲットは1体なのできちんと取れているかと思います。
ゲーム中にエラーが出るのではなく、コンソールにエラーが出てしまい、ゲームプレイ出来ない状況となります。 public IEnumerator Damege ()
{
//実装処理
}
大変失礼しました……コピペしたときに間違って入ってしまったようです……orz >>188
MonsterAI monster = Monster.GetComponent<MonsterAI>();
StartCoroutine(monster.Damege()); 1つのオブジェクトのみにアタッチさせたいスクリプトがあった場合
2つ以上のオブジェクトにスクリプトがアタッチされそうになるとエラーを吐くようにしたいのですが
そういったことは可能ですか? >>198
これだ……!
これですね、ありがとうございます!
StartCoroutineの使い方が間違っていました。
ありがとうございます! >>199
staticでbool宣言して、Start()でtrueなら自己削除、falseならtrueにする、というのはどうでしょう UnityEvent を設定できるコンポーネント、
プレハブの親階層のオブジェクトとか引っぱってくるのどうやるんだろ?
UnityEngine.UI.Button とかだと出来るんだけど自前で
[SerializeField] UnityEvent OnHogeFuga; ってのを持つコンポーネントを含む奴を
プレハブ化して、インスペクタ上に親階層の奴をドラッグしても×マークが出て
設定させてくれない。
UnityEngine.UI.Button のC#ソースでもどこかで公開されていないものかしら。 自分の親ならtransfrom.parent でよくね? >>204
UnityEvent のプロパティドロワーに transform.parent の選択なんてあったっけ?
あと常に親とは限らない。
部品の一部が持つAnimationControler のSMBとか、
複雑な uGUI の一部の部品がプレハブのルートを参照するとか、そういうの。 親階層とりたい
必ずしも親じゃない
後から色々条件出すならなんも出来ん そんな、でたらめな条件なら、findしかないわな。逆にこれ1発で解決。あとは目的のオブジェクトが判るようにid持っとけばok
ゴーゴー! UniRx色々こんな時こう使う的なパターン一覧ほしい oculus integrationでQuest用のアプリを開発しています。
OVRPlayerCOntrollerで移動をしています。
移動してシーンが変わるとシーンビューで設定している方向を向いててもらいたのですが、前のシーンの方向を見たままシーンが開かれます。
前のシーンで見ていた方向が引き継がれているようです。
OVRCameraRigのOVRManagerでResetTrackerOnLoadのチェックを付けたりしましたが、変わりありません。
どなたか前のシーンの見ていた方向を引き継がない方法をご存知でしょうか。
よろしくお願いします。 connected gamesって情報が何も無いですけど今どうなっているのか知っている人いませんか? script inspector 3使ってる人いるかな?
シェーダーのintとかfloatのテキストカラーがちゃんと表示できてないんだがこんなもん? 勉強するだけでも法人所属だとproライセンスいるん?これじゃあ使える仲間増やそうにも会社が許可しねーよ、ユーザー増やすつとりないんかな >>216
Unityで一定額売り上げなければいらんよ >> 217
いやだから法人だって...
>> 219
いや、勉強するだけでproライセンス分(198,000)とるなら、じゃあUnityやめようってなるって話、つまり参入しないだけ
それはunityにとって損だろと、
そんな法人いらねって話かもしれんが Androidで画面上部にAdmobのバナー分のスペース空けるには
どうしたらいいのでしょうか
固定値ではデバイスによって変わるのでダメだそうですね
自動で計算してくれる方法があるみたいですが
dpとかよくわかりません
よろしくお願いします。 >>226
admobのマッチ率ってこれに影響するのかな?
スマホ向けのサイズの広告をタブレットに出すとマッチ率下がってる感じがする https://assetstore.unity.com/packages/essentials/cinemachine-79898
ここからUnityのプロジェクトに「cinemachine」を入れたのですが、バージョンが2.1.10でどうしても使えない機能があり、調べてみました。
https://unity.com/ja/unity/features/editor/art-and-design/cinemachine
ここの公式にあるようにUnityの機能として入れると最新版に更新する更新することができ、使用したい機能など使えるのですが、公式のとおりに入れると「cinemachine」が2つになってしまいました。
Assetstore版から公式版にうまく乗り換える方法などどなたかご存知ありませんでしょうか。 >>227
自分が試したのだと
タブレットだと隙間がやけに大きくなってしまいます
マッチ率も下がるならほんと何とかしたいです
色んなアプリ見るとちゃんとバナー分ピッタリ空いてるのが多いから
方法はあるんだろうけど
Googleの説明は専門的過ぎてよくわからない >>229
やっぱりタブレットのせいですか。
マッチ率って下がると単価に影響しますかね? >>230
タブレットに限らず解像度の関係みたいです
誰か詳しい人お願い
広告出せないよ >>231
となるとフルHDでは問題でてないから、1920x1200前提で一番合いそうなサイズ探してみよ アダプティブバナーとかスマートバナーを使えと言うことだろうか >>231
アセットを買ってみてはどうでしょうか? まる一日考えても分からなかったのでご存知の方、ご教示下さい。
VRゲームをビルドするにあたってMMD4が悪さをしています(pmxをUnityで使えるようにするアレです)
MMD4があるとVRゲームをビルドしてもVRにならず、MMD4を削除すればVRとしてビルドされます。
何か回避方法をご存知の方居ましたら教えて頂けないでしょうか? Standard assetの車の入力調べてたけど
crossplatdforminputmanagerって何もの?inputみたいにキー入力取ってきたりしてるし
バーチャルパッドでも使えてるみたいだしなにこれ?
マルチに入力検知できるようなやつ? >>237
諦めてblender勉強中ですw
ワニでも分かる〜ってYou Tube動画
分かりやすくて良いですね。 China Origin Immuno Destroyer 19 しまった
China Origin Violent Immuno Destroyer 19 オブジェクトにColliderなどを設定してボタン機能をつけたときの
Layer設定について質問です
購入したアセットを使うときに、
オブジェクトのLayerをそのアセット用のLayerにする必要があるのですが、
オブジェクトにボタン機能をつけて
オブジェクトのLayerがUIDefaultのままだと、
再生してそのオブジェクトをタッチすると反応するのに
オブジェクトのLayerを変えると反応しなくなります
どうすればいいのか教えてください iOSデバイス限定の症状で質問です。
Landscape Right(ホームボタン右)の横画面で遊んでる最中
admobのリワード広告を視聴した後に
画面が必ずLandscape Left(ホームボタン左)
になってしまいます。
つまりホームボタン右状態でプレイしていると画面が逆転してしまう。
確かにPreferrd landscape Orientation で
Landscape Leftを基本にする設定にはしているんですが、
広告を見終わった後に現状の傾きを無視して
初期値になってしまうようなんです。 これを防ぐにはどうしたらいいんでしょうか?
というか、こんな症状の方っているんでしょうか? simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0 すみません
最新の2Danimationパッケージについて聞きたいことがあるのでよろしくお願いします
https://imgur.com/V4kC3JQ.png
このようにSpriteEditorでスキニングしているときに、applyを押すとすべての変更がリセットされてしまいます
https://imgur.com/YenTk5q.png
インポートしたpsbファイルのインスペクタは下の通りで、
https://imgur.com/jq7TkTn.png
エラーメッセージは非表示含め確認できませんでした
海外のコミュニティも回ってみたのですが似たような事例が確認できず、ほとほと困り果てています
アニマ2Dからアップデートしてからというもののトラブル続きで、全く作業が進みません
どうかどなたかお助けくださいませ
長文すみませんでした >お助けくださいませ
すみません、あまりにぶん投げた質問になってしまいました
現状のapplyにより作業が保存されず、さらにリセットされる状況を打破したく質問に参りました
また、2Dアニメーションのインポート設定の段階で色々と手間取ったりもしていて、この機能について学べる教材などでおすすめがあればどうかご教授ください
公式のものには目を通したのですがあまり英語が達者ではなく、また色々とすっぽ抜かした「紹介」的な段階に留まっているような印象を受けて、十分な経験値を得られませんでした
甘々な質問で申し訳ありませんがよろしければお力添えお願いします すみません、自己解決いたしました
しかし新パッケージ学習についてなにか情報をお持ちでしたらご教授くだされば嬉しいです
失礼いたしました ■ このスレッドは過去ログ倉庫に格納されています