[過去ログ] 【3Dゲームエンジン】Unity質問スレッド29 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
10(4): 名無し@キムチ [] 2017/05/21(日) 23:10:15.42 ID:VnLVHVoX(1) AAS
2つのカメラをアクティブをオン、オフにして切り替えているんですが、シーンを2つつくったあたりから、切り替えがどうも上手く働かなくなりました。
シーン2では全然働かなくなって、シーン1でもシーン1から同じシーン1に切り替えてやっと働く始末です。
シーンが1つしかないときは上手くいってたのに、一体これは何が原因なのでしょうか?またどうすればうまく切り替わるようになりますか?
30(3): 名無し@キムチ [] 2017/05/23(火) 06:04:06.15 ID:IlAarJy7(1) AAS
>>5353(2): 名前は開発中のものです。 [sage] 2017/05/23(火) 23:49:13.53 ID:aiX+k+Wv(2/3) AAS
>>50
昔APIリファレンス読んだ時に、該当するハッシュがあったのは知ってる。
"looktarget"でtransformの方を向く
"looktime"は向く時間の指定
RotateByは知らないけどMoveToならこう書ける
iTween.MoveTo(this.gameObject, iTween.Hash("path", movepath, "time", times, "easetype",
iTween.EaseType.linear, "looptype", iTween.LoopType.loop, "looktarget", target.transform,
"looktime", looktime));
オブジェクトの名前を変えるだけでよかったのですが、同じスクリプトを2つ作ったのは、用心のためです。
シーン1用のスクリプトとシーン2用のスクリプトをつくって、中身はほとんど同じです。
ただ2つのシーンの名前が干渉しないように、オブジェクトの名前だけは変えてあります。
あくまでも用心のため。こういうやり方って下手くそでしょうか?
50(3): 名前は開発中のものです。 [sage] 2017/05/23(火) 23:19:05.55 ID:uFIsh1OI(1) AAS
質問です。
itweenというアセットを使用しています。
外部リンク[php]:www.pixelplacement.com
オブジェクトを拡大・回転など手軽にトウィーンしてくれるアセットです。
これでオブジェクトを回転させようと試みています。
普通に回転するだけなら
外部リンク:doggy.hatenablog.com
この辺りとかを見てRotateで特に問題なく回転できました。
iTween.RotateBy(this.gameObject, iTween.Hash("z", 1, "easeType", "linear", "loopType", "loop", "time", 1.5));
こんな感じです。
ただ、この回転はオブジェクトの中心を支点にして回転します。
その視点をオブジェクトの任意の位置から回転させることはできないのでしょうか?
いろいろ調べましたが、なかなかそういうサイトが見つからず…
ご存知の方、お教えくださいませ!
79(3): 名前は開発中のものです。 [sage] 2017/05/25(木) 23:53:22.74 ID:tAq9dlle(1) AAS
hogeオブジェクトのz軸を参照して、プレハブを生成したいのですが、
↓では参照出来ません。
float zzzz = hoge.Transform.position.z;
ググリながら色々試したのですが、検索力が足りないのか、どれもうまくいきません。
どのようにすれば良いのでしょうか?
124(3): 名無し@キムチ [] 2017/05/28(日) 14:37:19.00 ID:QNw63hQc(1) AAS
初歩的な質問で恥ずかしいですが、
Altを押しながらマウスをスクロールすると、
以前は画面が回転していたのですが、
いつの間にか平行にスクロールするだけになってしまいました。
どこかヘンなところでもいじったのでしょうか?
復旧できずに困っています。
どなたかご教授お願いいたします!!
212(3): 名前は開発中のものです。 [] 2017/06/04(日) 20:16:13.95 ID:eVSMmeDS(1/2) AAS
class A
{
public int i = 1;
public enum EnumA{
element1,
element2,
}
EnumA enumA;
public A (EnumA arg){
enumA = arg;
print (enumA);
}
}
void Start (){
print (A.EnumA.element1);
//print (A.i); エラー
A[] listA = new A[10];
for (int i = 0; i < listA.Length; i++) {
listA [i] = new A (A.EnumA.element1);
}
}
別のクラスへアクセスするにはそのクラスのインスタンスが必要だと思うんですが、
この場合、int iとenumAにアクセスできないのはわかるんですが、
なぜEnumAだけアクセス可能なんでしょうか?
253(3): 名前は開発中のものです。 [sage] 2017/06/10(土) 22:02:47.63 ID:XgQ//yG2(1) AAS
素人同然の質問で恐縮ですが、UnityのSortingGroupのsortingOrderをスクリプトで設定する方法がわかる方教えてください。
SpriteRendererみたいに、GetComponentできないで困ってます。
273(3): 名前は開発中のものです。 [] 2017/06/13(火) 04:32:10.63 ID:AdsyBo0X(1/4) AAS
質問させてください
unityで蛇行した川をポリゴンで作り、プレイヤーがその川に入っている時にバシャバシャという水の跳ねる音をつけたいのですがうまくいきません
自分はmeshコライダーのトリガーを使って判定しようとしましたが、これだと川が蛇行しているので全頂点を内包する長方形の当たり判定が作られてしまい
見た目では川に入っていないのに判定が取られてしまいます。
透明なボックスコライダーなどを複数組み合わせてそれっぽくするしかないんでしょうか・・・
上記の実装に関して何かアドバイスを頂けたら幸いです
279(3): 名前は開発中のものです。 [sage] 2017/06/13(火) 12:18:39.62 ID:79OY4RFV(2/2) AAS
>>278いやボックスコライダに当たったらそこで初めてメッシュ古来だでの評価したいってことだが。
312(3): 名前は開発中のものです。 [] 2017/06/14(水) 07:15:07.65 ID:haEDSL54(1/2) AAS
public static class GameObjectExtensions
{
public static void transformM(this Transform t){ 処理 }
}
void Start () {
gameObject.transformM (gameObject.GetComponent<Transform>());
}
このコードだとエラーになるんですが、Transform型の引数ってどうやって渡せばいいんですか?
322(4): 名無し@キムチ [] 2017/06/14(水) 20:41:49.68 ID:1f23pPXc(3/6) AAS
これが主人公につけた当方のスタート関数です。
// Use this for initialization
void Start()
{
・・・長すぎるため省略・・・
MainCam = GameObject.Find("MainCamera(2)");
SubCam = GameObject.Find("Camera(2)");
animator1 = GetComponent<Animator>();
audioSources = GetComponents<AudioSource>();
sound01 = audioSources[0];
sound02 = audioSources[1];
sound03 = audioSources[2];
sound04 = audioSources[3];
sound05 = audioSources[4];
//sound06 = audioSources[5];
particle = GetComponent<ParticleSystem>();
MainCam.SetActive(false);
SubCam.SetActive(true);
InfoBox.SetActive(false);
・・・長すぎるため省略・・・ }
この関数 InfoBox.SetActive(false);のところまでしか処理されません。
それはsound06 = audioSources[5];を消しているからで、
この//sound06 = audioSources[5];をつけるとInfoBox.SetActive(false);も処理されなくなってしまいます。
行数にすると24行目までしか処理されないようです。
Unityの規約にスタート関数は24行までという規約でもあるのですか?
当方理由がわからず途方にくれています。
よろしくお願いします。
389(3): 名前は開発中のものです。 [sage] 2017/06/16(金) 22:00:19.70 ID:OyCZvXKK(1) AAS
あらかじめインスペクタでアタッチするのと、AwakeとかでFind&GetCommentのとではどっちが効率いいんだろう
424(3): 名前は開発中のものです。 [sage] 2017/06/18(日) 10:23:18.25 ID:XAVbtWpl(1/3) AAS
>>418418(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 00:00:18.95 ID:q1X0lAjX(1/5) AAS
ケースバイケースは地雷ワードだな
100%適用できるルールではなくても"基本的に"と譲歩つけた上で何か解を与えたほうがいいんだろね
みんな問いよりも解法ばかりを求める時代だから
ケースバイケース君と俺は別人だが俺が書いた>>379379(2): 名前は開発中のものです。 [sage] 2017/06/16(金) 08:17:36.16 ID:E6JM4SWs(1/3) AAS
>>372-373
インスタンスを意識してない初心者にありがちなミスだが、
StartCoroutine (Sample1 ());
StopCoroutine (Sample1 ());
止まらないのはこの2つの引数に渡されてるIEnumeratorインスタンスが別物だからだな。
文字列引数はコルーチンに引数がひとつしか渡せない、リフレクションしてるのでオーバーヘッドが大きいなどの点でインスタンスを渡すより劣る。
また他の問題として文字列引数はタイプミスしてても実行時エラーになるまでミスが検出出来ない、リファクタリングでメソッド名変えたら引数を書き換えなきゃならないなどメンテナンス性が悪い。
Coroutine coroutine1 = StartCoroutine (Sample1());
StopCoroutine (coroutine1);
または
IEnumerator sample1 = Sample1 ();
StartCoroutine (sample1);
StopCoroutine (sample1);
とすればちゃんと止まる。
遅い、不便、ミスしやすいの3拍子揃った文字列引数は、実行時に呼び出すメソッド名文字列を生成するなどの無茶をしなければ必要ない。
から派生してグダッてるみたいなので基本方針を示しておく
1. Findは基本的に使用禁止
文字列引数による検索は実行時エラーの温床となるので避けるべき、インスペクタ上でオブジェクトの名前を変えられただけでコケるとか怖すぎる
またヒエラルキーツリーを全部舐める様な処理を多用するのはパフォーマンス的にも好ましくない
2.インスペクタ上で参照がセットされていることを前提にした構造は可能な限り避ける
シーンファイルを誤って変更された時に、インスペクタ上で探して修正するのは面倒。特にシーン内のオブジェクトが複雑に絡み合った参照関係を持つなどは論外
もしどうしてもこれが避けられない場合はオブジェクトをプレハブ化してプレハブ内での参照に限定することで問題のスコープを小さく保つ
上記ルールに沿って作れないならそれは設計が悪いので設計を見直す、疎結合を徹底するべし
必要ならCamera.mainなどの様なstatic経由での参照の受け渡しや、シングルトンなマネージャークラスの導入を検討する
※多用は厳禁、後者はScript Execution Orderを正しく設定すること
ヒエラルキーツリーやインスペクタでの変更に弱いコードはメンテナンス性が低く、こうした変更による問題が発生した場合の問題箇所の検出が非常に困難になるので避ける様にするといい
426(3): 名前は開発中のものです。 [sage] 2017/06/18(日) 11:22:37.04 ID:YW1VLQdX(1/2) AAS
これ間違ってるね
>1. Findは基本的に使用禁止
名前で判断するのが一番メンテナンスしやすいので普通によく使われる
バグってもそれを上回る使い安さ。だから使用禁止にしてる企業なんかない
むしろ命名規則の徹底の方が大切。名前書き間違えるとか池沼に弄らせない限り起きません。
池沼はゲーム作っちゃダメ。以上、終わり
439(4): 名前は開発中のものです。 [sage] 2017/06/18(日) 14:08:17.74 ID:M/2QAqjI(1/5) AAS
スクリプトアタッチやインスペクタの設定をエディタ拡張で
自動化してる俺には関係が無かった
441(4): 名前は開発中のものです。 [sage] 2017/06/18(日) 14:46:23.45 ID:XAVbtWpl(3/3) AAS
>>432432(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 13:09:59.77 ID:q1X0lAjX(2/5) AAS
>>424
おお、何となく書いたレスに真面目な長文回答つけてくれてわざわざスマンね
俺は内容に関してはほぼ同意
Findに限らず、SendMessageやStopCoroutineみたいな文字列指定はクソだからね
ただ正し過ぎるというか、1,2を両方課すのは求道的すぎて利便性が損なわれてる気もする
1に比べたら、インスペクタ参照についてはもっと緩くてもいいんじゃね
全面的に同意、求道的すぎるのは認める
ここ初心者多いから>>426みたいなクソ開発者になるなという意味を込めて厳しめに書いた
リスクを理解した上で使うならともかく、安易に便利だからで多用すると一気にコードが糞になるからなぁ
>>439
あるある、ついでにエディタ上で触らせる必要がなく親子関係が確定してるオブジェクトなんかはhideFlagsも立てたりする
466(3): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:31:46.17 ID:Ga9T3hxB(7/9) AAS
>>462462(1): 名前は開発中のものです。 [sage] 2017/06/18(日) 20:13:48.96 ID:q1X0lAjX(5/5) AAS
>>459
最初の問い(>>389)はランタイム時の効率についての話しだが、それについてはFindのほうがオーバーヘッドが大きいよねと概ねコンセンサスは出来てるだろう
(直接、Find系とインスペクタ参照で速度比較したデータが示されていないけど)
で、>>424でランタイム時の効率だけでなくメンテナンス性にも話題が広がったので、複雑な参照関係はエディタ拡張スクリプトで自動化しておくと効率面でもメンテナンス面でも有益なことが多いよね、となった
なんかおかしいかな?
そう、その「複雑な参照関係はエディタ拡張スクリプトで自動化しておく」方法を知りたいんです
自分の状況を書いておくと、
1. 最初はインスペクタでドラッグ&ドロップで参照設定していた
2. UIとか配置オブジェクトが1シーンに数十個とかになってくると、さすがにポチポチは面倒…
3. Awakeで命名規則に従ってFindで設定しちゃえ
4. ランタイムではパフォーマンスが悪いし、オブジェクトのリネームに弱いと気づき、泣く泣くポチポチへ戻る
で現在4の状態なので、それを自動化できるアセットなら欲しいと思ったわけです
この話をしてる流れの中でUnityエディタ上でリフレクションとか使って自動設定するのかなとか考えたけど
運用考えると破綻しそうなので、すでにバリバリ実用してそうな>>441とかに参考コードのおこぼれでももらおうと思ったわけです
やっぱりそんなものはないのか、ポチポチ業務へ戻りますかね…
526(3): 名前は開発中のものです。 [sage] 2017/06/20(火) 19:52:18.25 ID:hl3V7Wt6(3/9) AAS
キムチー
なんとなく興味で聞くんだけど
キムチって年いくつだい?
あとどんなゲーム作ろうとしてるの?
ま、気が向いたら教えてくれ
602(8): 名前は開発中のものです。 [sage] 2017/06/22(木) 23:41:22.63 ID:nL8eDWtt(2/2) AAS
アセットって結局のところミドルウェアだからな
ミドルウェアだけで作られた作品はゲーム作りではなくただの積み木
694(3): 名前は開発中のものです。 [] 2017/06/26(月) 07:30:26.45 ID:Y3CMaUBy(1/2) AAS
dammy = FindObjectOfType(typeof(Dammy));
dammy = FindObjectOfType<Dammy>;
この()と<>の違いってなんですか
737(6): 名前は開発中のものです。 [sage] 2017/06/28(水) 01:05:13.75 ID:zwaBbdH9(1) AAS
スクリプトからMechanimのレイヤーごと、あるいはステートごとに
アニメーションのスピードを変更したいのですが、どうすればいいですかね?
865(6): 名前は開発中のものです。 [sage] 2017/07/02(日) 23:08:49.31 ID:dVwEafn/(1) AAS
Cubeで作った床の上をSphereを回転させて移動させたいと考えています。
Spehgeにtransform.Rotateを使用して回転させているのですが、
床の上を空回りするだけで移動してくれません
おそらくRotateはオブジェクトの角度を変えるだけで
物理的に回転をしているわけではないのかなと考えています
もしSphereのような球体を回転させながら摩擦によって床の上を転がしたい場合は
どのような方法が可能でしょうか
もし何かアドバイスありましたら教えてください、、
924(3): 名前は開発中のものです。 [sage] 2017/07/09(日) 14:23:28.77 ID:A5Iz9vIl(1) AAS
オブジェクトを色々弄っていたらいつの間にかシーンビューがおかしくなっていました
ズームしようとすると大きすぎてオブジェクトを通り過ぎてしまいます
どうやったら元に戻せますか?
931(3): 遊園地 ◆ExGQrDul2E [sage] 2017/07/10(月) 13:59:03.95 ID:OMkiwFdi(2/2) AAS
解決しました。
古いグラフィックボードを搭載している為にエラーです。
私は2種類のグラフィックボードの購入を検討しています。
ユニティーを動作させるのに、下記の2つから選ぶなら、どちらが適切なのでしょうか?
MSI NVIDIA GeForce GT710搭載 GDDR3 2GB グラフィックスボード VD5931 GT710 2GD3H LP
玄人志向 ビデオカードGEFORCE GT 710搭載 ロープロファイル 空冷FAN GF-GT710-E2GB/LP
なお、私が使用しているPCは64bitですが、古いです。
もしくは、物理エンジンをOFFにするべきでしょうか?
回答をお願いします。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.423s*