[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild4 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
261
(1): 2020/04/24(金)16:51 ID:hbCzfYWk(2/2) AAS
staticをつけると、その変数は
そのクラスで共通のものになる。

だからこれだと複製したオブジェクト全員が、ある一つのオブジェクトを操作している状態。
262
(1): 2020/04/24(金)17:53 ID:mqgYLk8R(2/2) AAS
staticを理解していない?
staticをつけると、簡単に言えばそのワールドで唯一の変数名になる。だから複数から参照操作はできるが、唯一を2つ存在させたら、どっちを参照するかわからんよね?
263
(1): 2020/04/24(金)17:57 ID:9IIgbh3E(3/4) AAS
>>261
>>262
staticについて理解できていませんでした。
264
(1): 弟子 2020/04/24(金)19:36 ID:X9i2PnLo(1) AAS
>>263

>260のコードで動かすにはこのようにします
多分Staticの使い方というより、prefabの生成に問題あると思います
画像リンク

画像リンク


質問は検証できる弟子を指名してね!
265: 2020/04/24(金)21:22 ID:WKjj9eyG(1) AAS
>>255

>>256

>>257
皆さんありがとうございます、これを教訓にそうすることにします……
266: 2020/04/24(金)21:26 ID:9IIgbh3E(4/4) AAS
>>264
わざわざソースまでありがとうございます!
267
(3): 2020/04/25(土)13:09 ID:c8LTCDvQ(1/3) AAS
動画リンク[YouTube]

アニメーションクリップに効果音を付けて4種類のSEの中からランダムで音が出るようにしているのですが、
二回続けて同じ音が出ないようにする方法はないでしょうか。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ken_furu : MonoBehaviour
{
public AudioClip[] _SE; //SEが4個入っています。

private AudioSource audioSourse;
Animator animator;

void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}

public void SE()
{
int a = Random.Range(0, 4);
audioSourse.PlayOneShot(_SE[a]);
}

}

このスクリプトを音を鳴らすアニメクリップが付いたオブジェクトにアタッチしています。
二回続けて同じ音が出ないようにする方法があったら教えてください。
外部リンク:thuploader.orz.hm プロジェクトファイル
268
(1): 2020/04/25(土)13:34 ID:Bwa2wt20(1/3) AAS
aの値を保持して、次の乱数時に比較する
269
(1): 2020/04/25(土)13:40 ID:2pXFtKle(1/2) AAS
>>267
色んな方法があると思いますが、
再生する度に再生したSEを除外し、除外されていたSEが存在すれば戻すという処理を入れるのはどうですか?

ランダムのレンジにはLengthやCountが使えますので実装自体は数行済むと思います。
配列をリストにした方が簡単だと思います。
270
(1): 267 2020/04/25(土)14:39 ID:c8LTCDvQ(2/3) AAS
>>268の方法は難しそうだったので
>>269の方法で試してみました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ken_furu : MonoBehaviour
{
//public AudioClip[] _SE;//配列
public List<AudioClip> _SE;//リスト型に変更

private AudioSource audioSourse;
Animator animator;

void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, _SE.Count);//_SE.Count リストの中の要素の個数
audioSourse.PlayOneShot(_SE[a]);
_SE.RemoveAt(a); //一度鳴ったSEを削除
}
}
SEの配列を、リスト型に変更して、一度なったSEを削除するところまでは出来たのですが
消したリストを次のSEを鳴らすときに元に戻すやり方が分かりませんでした。
どうすれば消したリストを元に戻すことができるでしょうか。
271: 2020/04/25(土)15:01 ID:Bwa2wt20(2/3) AAS
>>270
嘘だろぉ、おい!w
272: くまじょ 2020/04/25(土)15:23 ID:z5N+YfUG(1/6) AAS
俺なら前回の覚えておいて
乱数が同じものだったら+1
わずかに乱数に偏りが起こるけど
273
(2): くまじょ 2020/04/25(土)15:30 ID:z5N+YfUG(2/6) AAS
乱数が選んだものをリストから抜いてリストの最後に追加しておくとか
乱数の範囲は要素数-1で最後の要素(前回選んだもの)を避ける
初回は必ずリストの最後が選ばれないことになるけど
274: 2020/04/25(土)15:38 ID:DiGw5Kl0(1) AAS
横から失礼します
特定のAudioClipが再生中かどうかを検出するとかってできますか?

例)
if(Audioclip(ジャンプ音)が再生中){  処理 }

みたいなことがやりたいのですが
275: 2020/04/25(土)15:47 ID:a3TA/N7F(1) AAS
乱数記憶用の変数を用意
初期値は999などの有り得ない数
または一番目に鳴らしたくない音と同じ数

ランダムで出した乱数を変数と比較
もし同じ数字なら+1または-1して処理
(このスクリプトだと3の場合のみ-1)
また乱数(または処理後の数値)を変数に入れる

自分ならこれにするけど何せ初心者なので
もっとスマートなやり方があるならそっちで
276
(1): 2020/04/25(土)16:04 ID:2pXFtKle(2/2) AAS
>>273の再生したSEをリストの最後に追加してランダムのレンジに含めないがスマートで実用的かもしれませんね。

+1などで処理すると結局順番に再生されるだけでランダムにならないから質問者の意図する挙動とは違ってしまうんじゃないでしょうか?
277: くまじょ 2020/04/25(土)16:59 ID:z5N+YfUG(3/6) AAS
>>276
乱数が前回と同じ値だったら
1足して剰余でオーバーラン回避だよ
剰余のこと説明不足だった
278: 267 2020/04/25(土)17:19 ID:c8LTCDvQ(3/3) AAS
皆さんから助言を頂いて有難うございました。
>>273の方のやり方で、ずっと試していました。先ほどエラーが全部消えてやっと動くようになりました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ken_furu : MonoBehaviour
{
public List<AudioClip> _SE;//リスト型 4つのSE
AudioClip DeleteClip; //選ばれて消えたSEを変数に入れる

private AudioSource audioSourse;
Animator animator;

void Start()
{
animator = GetComponent<Animator>();
audioSourse = GetComponent<AudioSource>();
}
public void SE()
{
int a = Random.Range(0, _SE.Count-1);//リストの最後の要素はランダムレンジから外す
audioSourse.PlayOneShot(_SE[a]);//選ばれたSEを鳴らす
AudioClip DeleteClip= _SE[a];//選ばれたSEをDeleteClipの変数に入れる
_SE.RemoveAt(a); //選ばれて鳴ったSEを削除
_SE.Add(DeleteClip); //選ばれて消えたSEをリストの最後に追加
}
}
もしかしたら変な部分があるかもしれませんが、ちゃんと動いているようです。
本当に有難うございました。助かりました。
279
(4): 2020/04/25(土)17:57 ID:P2OYyiKX(1/2) AAS
Unityで2Dゲームを作ろうとしていますが、小さい表示枠と大きい表示枠について教えて下さい。

画像をSceneに配置すると小さい枠の中に置いたものが実行時に表示され、座標はたとえば-2〜+2です。
ヒエラルキーからUIのButtonを配置すると大きい枠の中に置かれ、座標は0-1000などの設定した画面サイズの値になります。
2つの座標系があるようなのですが、Sceneで見ると重なっていないのに実行すると上記の2つ枠は重なって表示されるようです。

なんでこんなことになってるんでしょうか?
両者を混在して使ってると実行環境によってずれが生じそうですが大丈夫なんでしょうか?
また「Unityの教科書 Unity 2019完全対応版」を読みましたが、次に読むと良さそうな本があったら教えて下さい。
280
(1): くまじょ 2020/04/25(土)18:16 ID:z5N+YfUG(4/6) AAS
>>279
それな
俺はunity初心者
座標面倒
キャンバスにイメージとスプライト混在したり一貫性ないなあ
281
(1): くまじょ 2020/04/25(土)18:23 ID:z5N+YfUG(5/6) AAS
>>279
シーンで見ると大きさが違うのと位置がずれてるのが邪魔で仕方ない

シーンで同じ位置同じ大きさ(見た目のことで座標の数値は違う)にするか

いっそのことシーンでは離れているが実行時に同じにしてみたり
重なってると邪魔なので

キャンバスのインスペクタを弄れば見た目の大きさは揃うよ
座標は-2とかのままがイイみたい
あれはメートルって意味らしい
282
(1): くまじょ 2020/04/25(土)18:23 ID:z5N+YfUG(6/6) AAS
詳しいことは俺も知りたい
283
(1): 2020/04/25(土)18:32 ID:Bwa2wt20(3/3) AAS
>>279
1冊読んで1本作れたなら、漠然とした指南は必要ないかなぁ。
あとは、ネットやるならオンライン系とか、作りたいものに合わせて選ぶだけだよ。
まだ1本も完成させてないなら、本より作り上げることかな。
284: 279 2020/04/25(土)20:19 ID:P2OYyiKX(2/2) AAS
>>280-282
やっぱりわかりづらいですよね
作りながら学んでいくしかないですかね

>>283
いま最初の一本を作ってるところです。
とりあえずわかる範囲で動くものを作ってみることにします。
285: 2020/04/26(日)17:01 ID:0LPIhU5v(1) AAS
・シーンにオブジェクトAとBを作る
・Bをプレハブ化
・GetComponentを記したスクリプトをBにアタッチ、そのインスペクタ内でAをアタッチ
・いざ実行すると、後者からAが消えておりnullが入ってる

これはどういうカラクリ?
GetComponentで保持できるのは同一シーン内のオブジェクトだけで、
プレハブは別シーン扱いだから不可ってこと?
286: 2020/04/26(日)20:07 ID:y6nEuqYj(1) AAS
初心者すぎる質問で申し訳ない
自分の街の地図データ(OSM)をUnityに取り込みたい
OSM2World(外部リンク:osm2world.org)をダウンロードして
以下の記事を参考に頑張っているのだけど、
外部リンク:qiita.com
使い方wiki(外部リンク:wiki.openstreetmap.org)に書いてあるGUI操作というものが分からずOSM2World を実行できずにいる
ダウンロードした中にアプリケーションらしきファイルはないし、どうやって実行するのか分からない
287: 2020/04/27(月)07:09 ID:bdPBx+if(1) AAS
垢付き無視されてて草
288: 2020/04/27(月)15:39 ID:slOrZu1n(1) AAS
エアプババアこと?橋聖子さーん!
Unity 触ったこともないくせにググって出てきたブログの内容をパクってスレに書き込まないでくださーい!
289: 2020/04/27(月)19:31 ID:S31Ss8MO(1) AAS
画面をドラッグしたらそれに合わせて
画面中心に置いてあるキューブのオブジェクトが回転するようにしたのですが、
例外的に画面のUI部分をドラッグしても何も起きないようにしたいです。

試しに画面内にボタンを配置してみますと、
ボタン部分をドラッグしてもキューブは回転しませんでした。

ですが、ボタンではなくスクロールビューを配置しますと、
スクロールビュー内で中身をスクロールさせる際に
キューブも回転してしまいます。

これは何が原因なのでしょうか?

スクロールビュー内でスクロールさせても、
キューブは回転しないようにしたいのですが。。。
290: 2020/04/27(月)22:29 ID:BsJwJx+j(1) AAS
ローグライクゲームで使われるようなテキストボックスの作り方を教えてください

具体的にはテキストボックスは4行目まで表示可能で
5行以上のテキストは初めに上4行が表示され、時間経過で下4行まで
スライドするようなものです

文字のフォントサイズとスライドの幅の関係がわからず
行数が増えてしまうと文字が見切れてしまうのですが
どうしたらよいでしょうか
1-
あと 712 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.027s