【ゲームエンジン】Unity初心者質問スレBuild4

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
2020/03/29(日) 19:35:12.24ID:mirhKW7D
ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね

●リンク
・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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
※前スレ
【ゲームエンジン】Unity初心者質問スレBuild3
https://itest.5ch.net/mevius/test/read.cgi/gamedev/1578720539
2020/04/10(金) 18:40:33.10ID:Dh2bRu19
ここ初心者煽りばっかりだな
2020/04/10(金) 18:50:36.78ID:TCjWXF7L
>>78
何をどう煽られたと感じたのかわからないけど、
「スクリプトで制御」という一言では何も伝わらないと思いますよ。

発射のタイミングなのか、ビームの動きなのか、ヒットの判定なのかetc

かめはめ波を発射したいだけならUnity かめはめ波でそのまんまのブログがヒットしますよ。
2020/04/10(金) 18:50:51.91ID:U5Dc1Chn
こんな質問で回答できるかっw
2020/04/10(金) 19:08:53.75ID:lUJ89tVV
>>68
割ってまでダークスキンとかアホだと思うけど
一昔前みたいなUIは何とかして欲しいとは思うけど
82名前は開発中のものです。
垢版 |
2020/04/10(金) 19:47:32.27ID:01H+T9O6
>>73

>>67
>設置できるオブジェクトはそれぞれ形が異なり、その形に応じて爆発の形と範囲を動的に変更したい
>例えば、球状や正方形なら爆発は球状に、長方形ならカプセル状に爆発と範囲を広げたいです

これ以上詳しくとなるとどういう情報が必要なんでしょうか?

・爆発の形状をスクリプトで動的に変えたい
要点はこれだけなのですが

検索してもノーコーディングでレンダラーをいじる記事しかヒットしません
2020/04/10(金) 19:54:29.67ID:WpZ4wsFL
>>82
爆発の形状って具体的にどんなものなの?
スクリプトで変えたいって、どういう形をどういう形にしたいの?
頂点変形の気がするが、もしそうなら多分これから時間かかると思うよ。
下の矩形で練習してみては?
https://qiita.com/divideby_zero/items/eef7604e306300fd7833

求めてるものが違うなら、まだわからない。
2020/04/10(金) 20:12:52.26ID:TCjWXF7L
>>82
立方体を爆発させて当たり判定を球体にしたいって事?

爆発の定義がエフェクトを表示しながら元のオブジェクトをデストロイする事ならエフェクトの当たり判定を球状にして拡大していけば良いのでは?
85名前は開発中のものです。
垢版 |
2020/04/10(金) 20:59:37.02ID:01H+T9O6
>>83
>>84

>>67
>球状や正方形なら爆発は球状に、長方形ならカプセル状に爆発と範囲を広げたいです

ここからさらに具体的にとなると・・・

正方形、もしくは真球の物体が爆発した場合、物体を中心に球状に爆発が広がります
横に寝かせた長方形の物体が爆発した場合、その長方形を中心にカプセル状に、円柱を横にしたような形で爆発を広げたいです
直立した長方形の場合、これもカプセル状に、直立した円柱状に爆発を広げたいです

爆発自体はパーティクルのエフェクトで行っています
ただ球状に爆発させる分には問題ないのですが、オブジェクトに沿った形で爆発が形状を変える方法がわかりません
オブジェクトの形はある程度可変、長方形ならその長さをある程度自由に伸縮させて設置できるため、形ごとに爆発のエフェクトを用意するのは現実的ではありません

>ならエフェクトの当たり判定を球状にして拡大していけば良いのでは?
ただ球状に拡大していった場合、長方形の物体の場合、中央部分だけが異常に爆発と当たり判定が広い状態になるので望ましくありません
2020/04/10(金) 21:56:06.99ID:qm8gwzR3
エフェクトの事なのか当たり判定の事なのかわからんけど、
その物体の両端と中央の三ヶ所にコライダとパーティクル置いてそれぞれ球状に広げれば
一応中央だけ膨らむことはなくなるぞ

ちょっと無駄があるけど
2020/04/10(金) 23:03:15.90ID:kQM20I0r
コライダーの形状って直接スクリプトからパラメータいじれなかったっけ?
読み込み専用?
2020/04/11(土) 08:19:56.00ID:griTBZmt
>>86
>エフェクトの事なのか当たり判定の事なのかわからんけど、
見た目と判定に差異があるとゲーム性に問題があるためエフェクトと当たり判定の両方の形は揃えたいです
なので、どちらか片方のことを話しているつもりはありません

>その物体の両端と中央の三ヶ所にコライダとパーティクル置いてそれぞれ球状に広げれば
それだと団子が3つ並んだ形で当たり判定も見た目も広がるため、今度はそれぞれの間の部分がおかしくなります

どうもこの様子だとよい方法はないようですね
パーティクルのファンクションがインスペクターの設定数より少ないようだったので難しいとは思っていましたが

>>87
コライダの形状はある程度スクリプトから設定可能なので、当たり判定だけなら球状、カプセル状自分の望んだ形にすることができることは確認しています
しかしエフェクトの方の形がそれに合わせられません
2020/04/11(土) 09:34:49.51ID:NRP0tUjz
>>88
わかった。
まず、当たり判定は置いときなさい。
つぎに「もしくは」もいらない。
やりたい事の例一つで絞りましょう。

まずは、横に寝かせた長方形の爆発パーティクルを楕円で広げたい、ということでいいか?
2020/04/11(土) 11:16:39.89ID:griTBZmt
>>89
>つぎに「もしくは」もいらない。
>やりたい事の例一つで絞りましょう。
すみません。ちょっとこの意味が分からないのですが、初めからやりたいことは一つしか示していませんが、どこがどう伝わったらそのような解釈になるのでしょう?

>まずは、横に寝かせた長方形の爆発パーティクルを楕円で広げたい、ということでいいか?
楕円ではなくてカプセル状です
爆発の中心にある長方形から半径は一定距離で爆発を広げたいです
2020/04/11(土) 11:43:05.45ID:NRP0tUjz
パーティクルを楕円で広げたいのか、一定=真円で広げたいのか?
2020/04/11(土) 12:15:53.75ID:7eVr3CSc
>>90
なんでこいつ偉そうなの?
そもそも長文の癖にずっと何言ってるか良くわからないw

オブジェクトの形に沿ってと言ってるのに正方形は球状に爆発しますとか、大体正方形って事は2Dなの?正六面体(キューブ)の3Dなの?爆発ってなんだよ?
自分の感覚で話してること他人がわかってくれるわけないでしょ

得たい情報を得られる様に質問出来てないのが悪い
2020/04/11(土) 12:59:59.54ID:griTBZmt
>>91
楕円でも真円でもなくカプセル状に広げたいです
長方形を例にしたのが悪かったのでしょうか

横に引かれた線の中心に、見た目と当たり判定が一致するように、各点一定の半径でパーティクルの爆発のエフェクトがカプセル状に広がるようにしたいです

>>92
偉そうにしていたつもりはありませんでしたが、不快にされたのなら失礼いたしました
どこがどう伝わらないのかがわからず、無駄に長文になってしまってすみません

全体を通してすべて3Dのことについて話しています
正方形は正六面体のことであり、これらの線を中心に一定の半径で爆発を広げた場合、球体に近い形状になるため、球状と表現いたしました

そもそも爆発とは設置したオブジェクトから広がるダメージ判定を伴うパーティクルのエフェクトです
見た目と判定が一致してくれないとプレイヤーの位置取りの判断ができなくなるため、エフェクトの形状を一致させる方法を探しています

ここまででまだ足りない情報がありますでしょうか
またご指摘いただければ改善していきたいと思います
2020/04/11(土) 13:38:13.73ID:RwDRPCMG
@爆発の飛散物を、球形にまき散らす
A球形の当たり判定を行う
B爆発の飛散物を、カプセル状にまき散らす
Cカプセル状の当たり判定を行う
D元オブジェクトの形に応じて、@AとBCを動的に選択する
の、どれがわからないんだ?

>>82
からするとDだけがわからないのか?
>>93
からすると@Bもわからないのか?

@〜Dの切り分けが間違っているかもしれないけど、
問題の正しい切り分けは、質問者側でやってくれ
そして、範囲を絞って質問してくれ
2020/04/11(土) 13:58:28.17ID:griTBZmt
>>94
設置する元オブジェクトの長さはプレイヤーの行動に応じて可変であるため、別々に作った@とBのどちらかを選択することでは解決できません
Bで作ったカプセル状にまき散らすエフェクトの長さ(カプセルの高さ)を変える方法を知りたいです
2020/04/11(土) 14:13:40.89ID:7eVr3CSc
>>95
こういう事かな?
ttps://www.jonki.net/entry/2014/11/15/165419

旧システムが使われてるから動くかわからないけど解決の糸口にはなるかも?
時間が空いた時にまだ解決してなかったらいじってみるよ。
97名前は開発中のものです。
垢版 |
2020/04/11(土) 15:10:29.28ID:2WfQz7pF
https://stackoverflow.com/questions/40576858/unity-admob-hide-banner-doesnt-work

このページの回答のRequestBanner function:についての解説なんですが
先頭のBannerViewを取り除くだけで
ローカル変数からグローバル変数に変わるということなのでしょうか
ローカルかグローバルかはメソッド内で定義されたかどうかだと思うのですが
BannerViewがなくなることによって何が起きるのか解説お願いします。
2020/04/11(土) 15:16:46.77ID:PmvPLRIC
>>95
パーティクルエミッターが、線上のが欲しいということでしょ?
両先端だけ見れば、真円状の放射、途中の線上は円柱状。
ちがうかな?
2020/04/11(土) 16:31:52.37ID:griTBZmt
>>96
具体的なサイトありがとうございます
とりあえず動かしてみるには見てみましたが望むような挙動はまだ得られていません
とりあえずメッシュの座標を変えれば望む形に変えられるということなのでしょうか

>>98
それは設置するオブジェクトに応じて別々に作ったエフェクトを割り当てる方法でしょうか
円柱状の高さを変えることができるのであれば対応できるのですが
2020/04/11(土) 17:00:49.33ID:PmvPLRIC
エミッターの奥行き厚みを無しすれば、線状のエミッタになるはず
2020/04/11(土) 17:39:12.13ID:LqrATKHJ
ラインの通知みたいな赤い丸に数字が入ってるアイコンってUnityのUIにありましたっけ?
何処かで見た覚えがあるのですがアセットだったかな・・・。
102名前は開発中のものです。
垢版 |
2020/04/12(日) 12:22:43.53ID:BLcL866+
>>97
これ調べてもわからないです
マジでお願いします。
2020/04/12(日) 13:09:38.43ID:qtEGGwes
直訳すると、

「RequestBannerが悪いんじゃね?
bannerViewは田舎もんだから、もっと世界を見なくちゃあかんぜよ」

「もうひとつ問題があるっぺ。
HideAdでbannerViewを隠す前にデストローイ!してるべや。
bannerViewを隠してからデストローイ!してもいいけど、
べつにデストローイ!する必要ねぇんじゃね?」


・・・つまり、5行目にstaticを付けなさい、
  private static BannerView bannerView;
あとHideAdの中のDestroyはいらないよ、
ってことじゃね?

(補足)RequestBannerメソッドで、毎回bannerViewインスタンスをCreateしちゃってるから
毎回Createしないで、bannerViewをstaticにして、インスタンス作成済みなら作成済みのインスタンスを使いなさい、
ってことだな
104名前は開発中のものです。
垢版 |
2020/04/12(日) 14:38:02.16ID:YyHebXAt
学術巨大掲示板群: アルファ・ラボ
ttp://x0000.net

物理学 化学 数学 生物学 天文学 地理地学
IT 電子 工学 国語 方言 言語学 など

PS 虫は宇宙人だよ ttp://x0000.net
2020/04/12(日) 16:39:58.76ID:eDPCkeUz
スクリプトを書く時に使わないusingとかモノビヘイビアとかって皆さん消してますか?
消さないとどの様な弊害があるのでしょうか?
2020/04/12(日) 17:55:48.17ID:HNHcGLA3
使わないのは勝手に消してくれるわ
2020/04/12(日) 18:34:44.63ID:eDPCkeUz
>>106
そんな機能あるんですか?
こちらはVS使ってますが使われてないusingはグレーアウトしてる感じです。
モノビヘイビアはコンポーネントを使わなければ消しても問題無いんでしたっけ・・・。

よく解説動画などで使わないので消しましょうみたいな流れがあるので読み込み速度等に影響するのかな?と思いまして。
2020/04/12(日) 18:36:29.80ID:O9wm4Cdq
使わない部分はコンパイラが勝手に無視してくれるので残してようが問題ない。
単にソースが長ったらしくなって読みにくく鳴るから消そうねってだけ。
2020/04/12(日) 18:48:36.84ID:HNHcGLA3
>>107
VSだけど拡張機能いっぱい入れてるから正確にどれが作用してるかわからんけど
保存時にコード自動フォーマットしてくれる時に消えてるからその辺
2020/04/12(日) 21:41:34.58ID:IMe/uvVh
パソコンのメモリって8GBでも足りますか
unity動かすためにはこれぐらいで十分ですかね?
2020/04/12(日) 22:03:10.69ID:aOM+fTXk
最低16は欲しい
できれば32
2020/04/12(日) 22:38:48.29ID:IMe/uvVh
最低16ですか
できれば中古で買いたいんですがそうそうないですよね
2020/04/13(月) 00:12:22.12ID:1IyWOLTh
Macのbookシリーズじゃなきゃ、後で差し替え。
2020/04/13(月) 08:05:23.27ID:h3Qgyu9i
個人で作るレベルの2Dゲームなら8Gで良くない?
2020/04/13(月) 09:52:11.08ID:1IyWOLTh
いや、unityは大きくなり過ぎてるから足りない。
特にアセットを数個入れるだけでギガ単位でプロジェクト容量が増えてく。
2020/04/13(月) 12:24:17.13ID:XTUvhK2t
8でもいいよ
そりゃ多い方がいいけど
2020/04/13(月) 13:16:02.83ID:7S3fZ3DT
でぇじょうぶだ
仮想メモリがなんとかしてくれる
2020/04/13(月) 15:57:04.66ID:AnR+tegB
そりゃあ動くよ当然
快適に動かすにはほしいという話
いまメモリ安いし
2020/04/13(月) 17:03:13.79ID:W8iFMn3H
質問です
2次配列 INT型 (Y3,X10) を宣言したとして
Y0 = {1,2,3,4,5,6,7,8,9,0}
Y1 = {4,5,6,2,3,4,6,7,8,0}
Y2 = {4,2,3,4,5,6,2,8,9,0}
みたいにY軸にまとめて数値を入れたいのですが
どういうふうに記述すればいいですか?
2020/04/13(月) 17:30:19.20ID:1IyWOLTh
>>119

https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/multidimensional-arrays
2020/04/13(月) 17:34:44.18ID:W8iFMn3H
>>120
ありがとうございます !
2020/04/13(月) 17:56:50.41ID:Zl6mUABL
紐状のオーラを体に巻き付けて動きをアシストさせて、身体機能を向上させる、
みたいな演出をしたいのですが、パーティクルで可能でしょうか?
それともBrenderで作るべきでしょうか

紐を巻き付けるという演出上、頂点数がすごいことになるのでそれにさらにアニメーションをつけるとかなり重くなりそうなので
何かもっと軽く作る方法はないものかと
2020/04/13(月) 18:07:33.17ID:1IyWOLTh
>>122

https://flypot.jp/2018/08/06/shuriken_book/
2020/04/14(火) 01:19:38.79ID:OujM5m2J
当たり判定の際、相手のパラメータをGetComponentせずに参照するやり方を教えて下さい。

■前提
攻撃側と防御側でコライダーが接触した際、攻撃側の攻撃力を参照して、防御側の防御力と差し引き、防御側のHPを減らしたいです。
コライダーの検知は防御側の当たり判定をつけた子オブジェクトにアタッチしたスクリプトでOnTriggerしています。
防御側のパラメータは、Startで親のパラメータをキャッシュできるのですが、攻撃側のパラメータは都度誰に攻撃されたか変わるので、
collisin..gameObject.GetComponentで相手のスクリプトを取得しています。

しかしGetComponentは重いので接触の度に行うのはパフォーマンスに不安があります。
小ダメージを連続多段ヒットさせる攻撃などは危ない臭いがしています。

しかし、OnTrigger内で相手のパラメータを参照する方法を調べても、GetComponent以外が中々見つからず困っています。
2020/04/14(火) 07:27:02.72ID:F0R42j3I
接触時だけなら重くないはずですが。
そうでなければ、全て管理するしかないかと。
2020/04/14(火) 07:55:35.84ID:pPWIKZgS
ゲームオブジェクトとコンポーネントを紐付けたディクショナリ作って
呼び出し時はそこからコンポーネントを取得するとか
2020/04/14(火) 08:55:38.16ID:voGt/nBP
解像度によってPostProcessingのBloomがかなり見た目変わりますけど、皆さんどうやって対処してますか?
2020/04/14(火) 22:29:52.11ID:IG2pgGi+
RPGのスキルの説明文やカードゲームのカードの効果のテキスト部分などは皆さんどうやって管理してますか?

一つ一つをプレハブ化して無理やりやる事も出来るのですが、もう少しスマートな方法が無いものかと模索しています。
2020/04/15(水) 06:11:32.25ID:W4OTEmGD
エクセルで管理
2020/04/15(水) 10:19:54.79ID:aOIdAe/5
rigidbody2dで水泳の蹴伸びみたいな反力を再現したいのですがうまく跳ねてくれません
どうすれば再現できますかね。。。
2020/04/15(水) 11:55:11.62ID:UUYKPDdG
現在どうなっているのか、そこからどうしたいのかをもっと詳しく書かなきゃ答えられるはずなかろうにw
2020/04/15(水) 12:15:26.63ID:yVr1KOQK
>>129
例えば説明文が「敵に5ダメージ」だとして、
5の部分を変数にしてバフ等の効果によって変更可能にしたい場合どう管理すれば良いのかが思いつきません。

今はひとつひとつを関数にして表示しています。

public string Attack(int playerAttack)
{
var text = $"敵に{playerAttack}ダメージ";
}

こんな関数をたくさん書いたクラスから呼び出してtextに代入する感じです。

理想としては、ScriptableObjectにstring Descriptionを追加してインスペクターに「$"敵に{playerAttack}ダメージ";」の様に書き込めると非常に楽なのですが、記号なども含めてそのまま表示されてしまいました。
インスペクターのフォーム内で変数を使用する方法はあるのでしょうか?

この様に変化するテキストを管理したい場合もエクセルは向いているのでしょうか?
2020/04/15(水) 12:24:48.80ID:yVr1KOQK
>>130
物理挙動の話なら的外れかもしれませんが、
ttps://qiita.com/ryosebach/items/5bd90d4b464b9059f35d
ttps://qiita.com/pixelflag/items/e5ddf0160781170b671b
アニメーションの緩急はEasingと言うみたいです。
解決のヒントになれば良いですが。
134名前は開発中のものです。
垢版 |
2020/04/15(水) 13:15:37.54ID:lnHW68ZC
質問です
カメラを矢印キーで上下に動くようにしたいのですが…

下のスクリプトにtransform.Translate(0,1f,0)のように書き足してみたのですが、カメラが1f上を写すだけで移動しませんでした。
2Dです。

public GameObject Player;

void Update()
{
Vector3 PlayerPos = Player.transform.position;
transform.position=new Vector3(PlayerPos.x,0,-10);
}
2020/04/15(水) 13:29:54.08ID:UUYKPDdG
>>134
カメラのスクリプトじゃないのか?
136名前は開発中のものです。
垢版 |
2020/04/15(水) 13:40:58.84ID:lnHW68ZC
>>135
カメラのスクリプトです
このスクリプトだとプレイヤーのx軸を追従するようになってます
2020/04/15(水) 14:00:10.78ID:UUYKPDdG
>>136
なら、合ってるよ。
キャラの座標を毎回カメラに入れてるでしょ。
138帝王
垢版 |
2020/04/15(水) 14:02:51.23ID:PFjTS2Tn
いや違うだろw
カメラを十字キーで上下だぞ
x座標をプレイヤーポジションに合わせているだけで
入力すらとってないじゃないか
139帝王
垢版 |
2020/04/15(水) 14:08:21.41ID:PFjTS2Tn
よくわかんないから
きちんと書いてくれないか?
x軸はいいからy軸をどうしているのか
140名前は開発中のものです。
垢版 |
2020/04/15(水) 14:08:31.08ID:lnHW68ZC
>>138
一応
if(Input.GetKey(KeyCode.UpArrow))
{
transform.Translate(0,1f,0)
}
のような形でキー入力は入れてみたんですが、これだと上キーを押した時にカメラが1フレーム上に移動するだけでした…
141名前は開発中のものです。
垢版 |
2020/04/15(水) 14:09:48.32ID:lnHW68ZC
>>139
プレイヤーをジャンプさせたときに一緒にカメラが移動してしまうので0にしています
0のままだと動かないそうですが、どう変えればいいのかわからず…
2020/04/15(水) 14:17:38.35ID:PFjTS2Tn
毎フレームy座標が0に戻ってるのでは?
yもプレイヤーに合わせるからなるんじゃないのかな
transform.position.xでx座標だけプレイヤーのx座標にしたらどうだ?
143名前は開発中のものです。
垢版 |
2020/04/15(水) 14:28:05.74ID:lnHW68ZC
ありがとうございます
transform.position.xはどこに入れるのが正しいんでしょうか…
いろいろと試してみたのですがことごとくエラーを吐かれてしまいまして
2020/04/15(水) 14:31:19.37ID:JTV4iwjm
>>142
これやると何故かエラー出るんだよなぁ

var x = Player.transform.position.x;
var y = transform.position.y;
if(Input.GetKey(KeyCode.UpArrow))
y+=1;
else if(Input.GetKey(KeyCode.DownArrow))
y-=1;
transform.position = new Vector3(x,y,-10);
これで
145名前は開発中のものです。
垢版 |
2020/04/15(水) 14:38:32.35ID:lnHW68ZC
>>144
ああああああできました!!
ありがとうございます!!
146名前は開発中のものです。
垢版 |
2020/04/15(水) 14:39:29.09ID:lnHW68ZC
お二方ともご丁寧にありがとうございました!
147名前は開発中のものです。
垢版 |
2020/04/15(水) 15:48:30.60ID:bwJYFlmz
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
2020/04/15(水) 20:56:57.45ID:8YH6OY1K
rigidbodyにおいて、質量(密度?)を不均一にしたい(おきあがりこぼしのように一部は重く、一部は軽いというような)のですがやり方を御教授頂けないでしょうか。
149帝王
垢版 |
2020/04/15(水) 22:58:43.68ID:PFjTS2Tn
フリーズローテーションとかじゃダメな気がするので
blender等でならオブジェクトのピボット中心点を移動できる
でもrigidbodyをつけるなら形の通りに動くのだろうか
マトリョーシカ(ロシアの人形ね)みたいな卵型を使うとして
オブジェクトを5分割とかにしてみて別々(もとは同じ)のオブジェクトを装備しているような感じにして
fbxで一緒にくっつけて書き出して
メッシュコライダー入れてリジットボディでmassでそれぞれの部位に重さを設定すれば
いけるんじゃないか
物理でバラバラにはならないと思うけどなるなら
blender等で全選択して押し出しでオブジェクトの膜を作って
バラバラにならないように外側を固めるとか
>>148さんが言うような機能は
たしかにblenderとかではウェイトペイントという機能はあるが
あれはボーンにどのくらい追従するかを設定するだけだから違う
無知ですまん
2020/04/16(木) 01:37:50.84ID:TrwSK5Ca
UNITYの教科書って本には、
プレファブ作ってスクリプトから生成するとき
 GameObject obj=Instantiate(prefab) as GameObject;
と記述するとあるのですが、
これの「as GameObject」付けなくても生成してくれるんですが、
省略してもいいんでしょうか?
2020/04/16(木) 06:07:39.54ID:f9bKhCih
staticのシングルトンで作ったDataクラスに GameObject型のenemy1を宣言し、
別のスクリプトからプレハブをロードしてインスタンスしたところ、シーン上ではプレハブが表示されたもののなぜかnullエラーが出てしまいます。
同じプレハブをstaticでない通常の変数で宣言してインスタンスするとエラーは出ないのですが何が原因でしょうか?

//========■シングルトンのDataクラス↓

public class Data : MonoBehaviour
{
public static Data btdata = null;

private void Awake()
{
if (btdata == null)
{
btdata = this;
DontDestroyOnLoad(this.gameObject);
}
else
{
Destroy(this.gameObject);
}
}

public GameObject enemy1 = null;

//========■別のスクリプト↓

GameObject obj = (GameObject)Resources.Load("Enemy_Chinpira");
Data.btdata.enemy1 = (GameObject)Instantiate(obj,new Vector3(0.0f, 0.0f, 0.0f),Quaternion.identity); ←NULLエラーは出る

GameObject hoge = (GameObject)Instantiate(obj, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);  ←こっちだとエラーは起きなかった
152くまじょ
垢版 |
2020/04/16(木) 07:28:05.42ID:RAGlvlvv
>>151
シングルトンが不完全
どこよりも先にこいつのawakeが実行されるわけではないのでは?
153くまじょ
垢版 |
2020/04/16(木) 07:38:25.42ID:/YRdqyfH
>>151
別のスクリプトのawakeで実行してるとか

※個人の感想
個人的には複数シーンを使うときこのやり方は俺の好みではない
2020/04/16(木) 07:39:07.03ID:f9bKhCih
>>152
Awake使ってるの今のところここしかないです…
155くまじょ
垢版 |
2020/04/16(木) 07:39:08.75ID:/YRdqyfH
>>152
不完全というのは不適切でした
156くまじょ
垢版 |
2020/04/16(木) 07:43:52.45ID:/YRdqyfH
>>154
このシングルトンのオブジェクトを
このシングルトンを使うすべてのシーンに
一つ置いてますか?

このシングルトンのawakeが実行されていないと思われるのでスクリプトがあるだけでこのシングルトンのゲームオブジェクトが存在しないのではないかと思う
2020/04/16(木) 08:00:07.67ID:f9bKhCih
>>156
すみません。テストをしているシーン上にDataをアタッチしたオブジェクトを置かれていませんでした…
シーンに配置したところエラーが出なくなりました。ご指摘ありがとうございます!
2020/04/16(木) 08:09:37.51ID:f9bKhCih
すいませんもう一つだけ教えてください。ついさっきDataがシーン上にない時に試行錯誤しているうち
シングルトンの public GameObject enemy1 = null; を public staticに変えて、
Data.btdata.enemy1 = ... の部分を Data.enemy1 =  ... という記述に変えたことでもエラーが出なくなった事に気づいたのですが、

これは普通のpublicだとbtdataをシーン上に配置してインスタンスしないとアクセスできないけど、
public static だとインスタンス無しでアクセスできる、ということなのでしょうか?
159くまじょ
垢版 |
2020/04/16(木) 08:36:18.21ID:8aea26m5
>>158
正確にどういうスクリプトになったのか曖昧なので俺にはわからないのでわかりません

staticつけたものはインスタンスとは独立してるからね
インスタンスがいくつでも0個でもstaticは一つ存在する

でもシングルトンのインスタンスを一つ作ることになるけどね
シングルトンの中身の全てにstaticをつけるとかしないから
2020/04/16(木) 08:51:29.56ID:f9bKhCih
>>159
ありがとうございます。シングルトンの解説をしているサイトでメンバ変数にstaticがあるものとないものがあるのはなんでだろうと思ってたんですが、少し理解できました。
2020/04/16(木) 09:07:29.78ID:kHeNh8ng
>>149
unity上で部品のように固定する感じですか、ありがとうございます☺
2020/04/17(金) 05:57:19.40ID:VOQWR+Wk
ゲームオブジェクトのプレハブを動的に切り替える事はできないのでしょうか?
共有のゲームオブジェクトを一つ作り、その中に複数のprefabをアタッチしておき、ゲームの状況に応じてprefabを切り替える…ということをやりたいのですが、上手くいきません。

instantiateをするとクローンの別オブジェクトは生成されるのですが、別オブジェクト生成ではなく自分自身のprefabを切り替えたいです
2020/04/17(金) 08:33:03.18ID:qsxXwaDY
>>162
2つ既にくっついてるなら、
gameObject.setactive(false)
で、消しては?
2020/04/17(金) 11:32:53.20ID:VOQWR+Wk
>>163
SetActiveの存在をすっかり忘れてました…ありがとうございます
2020/04/17(金) 11:50:59.54ID:ZJBJxQUO
アニメーションクリップを作るときに、
imageをまとめてSceneビューにドラッグ&ドロップして作るときと
アニメーションウィンドウに画像をドラッグ&ドロップして作るときとで
アニメーションの速度が全然違うのですが、どうしてでしょうか。
タイムラインの秒数は同じはずなのに速度が全然違います。
2020/04/17(金) 17:22:44.21ID:SVOeOAOE
3Dのゲームなのですが、避雷針のようなものを設置して、それを中心に一定範囲内で発動した魔法はすべて避雷針に向かってしまい、
実質魔法が無効化される、というシステムを考えています

スフィアコライダを使ってその範囲を作り、接触した魔法を中央の避雷針に飛ぶように軌道修正させようとしましたが、
魔法自体何かに接触すると効果を発動して消えるものであるため、スフィアコライダに接触した時点で消えてしまいました

魔法を無力化する効果自体はこれでも十分ではあるのですが、できれば軌道が変わることで意外な場所に着弾したり、
魔法を受け続けた避雷針が破裂するか何かして周囲に被害をもたらしたりとかしてみたいので、消えてほしくはありません

何か良い方法はありませんでしょうか
2020/04/17(金) 21:00:16.16ID:5qCFijOz
特定の名前とかタグ名で判別すれば良いのでは?
2020/04/18(土) 06:19:18.41ID:cZRvWLJz
お前らどんなゲーム作ってんの?

https://youtu.be/CiPugp_YKm4
2020/04/18(土) 07:04:01.39ID:aB+KxVXg
無料版unityで作ったアプリをGoogleplayに出して遊んでみたらmade with unityのロゴが出なくなったんですが仕様ですか?
170名前は開発中のものです。
垢版 |
2020/04/18(土) 09:07:20.83ID:ctOwdfD6
>>103
ありがとうございます。

WebViewを表示したときにAdMobを消して
WebViewを消したときにAdMobがまた出るようにしたくて、

まずAdMobのスクリプトで
public static BannerView bannerView;
にして

public void HideBanner()
{
bannerView.Hide();
}

public void ShowBanner()
{
bannerView.Show();
}

を追加して、

WebViewを出すためのボタンを押したときのスクリプトに
AdMob.bannerView.Hide();
を書いたら
WebViewを出すときにAdMobを消すことができました。

(続きます)
171名前は開発中のものです。
垢版 |
2020/04/18(土) 09:13:51.88ID:ctOwdfD6
(続き)
そして、以下のWebViewのスクリプトに
-----------------------------------------------------
void Start()
{

     〜 (略)WebViewを表示させる部分 〜

webView.OnShouldClose += (view) =>
{
webView = null;
return true;
};

webView.OnMessageReceived += (view, message) => {
if (message.Path.Equals("close"))
{
Destroy(webView);
webView = null;
}
};
}

void Restart()
{
if (webView != null)
{
webView.Reload();
}
}
-----------------------------------------------------
(続きます)
17297
垢版 |
2020/04/18(土) 09:14:48.69ID:ctOwdfD6
(続き)

自分で色々試してこれを追加すると、
void ShowBanner()
{
if (webView == null)
{
AdMob.bannerView.Show();
}
}
WebViewをバックボタンで消すときにAdMobを再表示させることができたのですが、
もう一度WebViewを出すと、AdMobが消えずに残ったままになってしまいます。
webView == nullがずっと影響してしまうのでしょうか
どうすればいいのか教えてください。
173名前は開発中のものです。
垢版 |
2020/04/18(土) 14:06:29.92ID:ctOwdfD6
>>172は間違いでした。訂正です。
このUpdateの方を追加すると、

void Update()
{
if (webView == null)
{
AdMob.bannerView.Show();
}
}
>>172のような状態になります。
2020/04/18(土) 14:11:33.53ID:z8IRbjj0
if (Random.Range(1, 4) == 1 && 2)
{
Debug.Log("三分の二で入る");
}
と書くと
エラー CS0019 演算子 '&&' を 'bool' と 'int' 型のオペランドに適用することはできません
というエラーが出てしまうのですが、これと同じような処理をしたい場合どのように記述すればいいのでしょうか。
2020/04/18(土) 14:38:00.43ID:hYM46Tv/
>>174
if (Random.Range(1, 4) <3)
176174
垢版 |
2020/04/18(土) 16:03:25.48ID:z8IRbjj0
>>175どうも有難うございます!
177名前は開発中のものです。
垢版 |
2020/04/18(土) 17:40:56.82ID:LRtmG8cA
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
2020/04/19(日) 04:12:48.26ID:1PPWw4FK
キーを押したら平行ライトの角度が変えられるスクリプトで質問したいです。
元のライトの角度が(50,-30,0)とかになっていてたとします。
リセットキーをつけようとQuaternion.identityをつかうと0,0,0
になってしまいます。
もとの(50,-30,0)にもどす(リセット)するにはどうしたらいいでしょうか?
よろしくお願いいたします。
-------------------------------
if (Input.GetKey(KeyCode.U))
{
transform.Rotate(50 * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.I))
{
transform.Rotate(-50 * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.O))
{
transform.Rotate(0, -50 * Time.deltaTime,0);
}
if (Input.GetKey(KeyCode.P))
{
transform.Rotate(0, 50 * Time.deltaTime,0 );

}
if (Input.GetKey(KeyCode.L))
{
transform.rotation = Quaternion.identity;

}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況