[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild1 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
20: 名前は開発中のものです。 [sage] 2018/06/23(土) 15:04:05.80 ID:GjE91D+n(3/7) AAS
>>1414(2): 名前は開発中のものです。 [sage] 2018/06/23(土) 10:55:00.16 ID:7kjsBpxb(1) AAS
>>11
俺はオフの次のキーでオンになってないんじな以下と思った。
spritererendereの2番目のひし形クリックした時、spritererendere横の0は1になってる?
さんのご指摘のspritererendere横の数字が0だったのを1にしてみました。
すると、プレイヤーが点滅状態にできました!
しかし求めている非描画、描画とを交互にするイメージとは違い、
非描画1秒ごとに一度描画される感じです。
タイミングを表現すると、ンーーパッ、ンーーパッ、て感じで点滅しています。
(自分がやりたい点滅タイミングは、ンパンパです)
多分、ひし形をカットして1秒サイクルを0.10ほどに短く作れば、いけそうですが
チュートリアルに倣って、完成させたいので
この1秒の中でンパンパになる様に設定したいのですが、、どうすればいいんでしょうか
ちなみに、今回spritererendere横の0を1にしたら
なぜ1秒後に描画される様になったのか、理由がわかりません。
この数字はなにを表しているのでしょうか?
画像リンク
34(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/23(土) 23:12:44.80 ID:3i5tK2/L(6/6) AAS
>>33スレローカルルールに違反なので嵐通報させてもらいますね
81(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 15:51:48.80 ID:07W788OP(2/3) AAS
>>8080(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 15:31:24.61 ID:mQnQFUMP(1/3) AAS
>>79
左右キーが押されたらキャラクタの座標を変更すればいい
各位置を0〜4の番号を割り振っておいて、今キャラクタが何番にいるか記憶しておく
3番にいるときに右キーが押されれば4番に移動すればいいので4番の座標に動かす
4番にいるときに右キーを押されたら0に行くのか4のままなのかは仕様次第
ありがとうございます
使うのはifでいいのでしょうか?
98(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:28:13.80 ID:9SECcI4o(2/2) AAS
ついでに、dirこそUpdate関数内ローカルでいい。
int dir=tfTriangle.position.x<limit?1:-1;
って書いとけばcheckrightのなかでdirをゼロにする必要もない。
349(1): 312 [] 2018/08/05(日) 01:31:28.80 ID:CyFJgm7j(1/2) AAS
>>334334(1): THE・ステップアップ先生 [sage] 2018/08/04(土) 15:19:06.70 ID:KOItUBKr(2/2) AAS
>>312
次の内容はおまけなので意味不明な場合は気にしなくていいよ。
ソース上でのオブジェクトの管理のしやすさはメモリー使用量に反比例する。
今までのやり方(main()ループのやり方)だと扱いたいオブジェクトを最初に配列に全て格納するのでそれだけ沢山メモリーを占有し続けることになる。
旧型のゲームを作る場合はこのやり方でも問題ないし今でもこっちの方が扱いやすい場面が多々ある。
とくに小規模ゲームの場合はこっちのやり方で全然いいと思う。
じゃあUnityがこの古き「main()ループ」のやり方になっていないのは何故かというと
中〜大規模のゲーム作成も想定して作られてるのもあると思う。
この規模になると次の事を実現しないといけない。
・必要な場面にだけメモリだけを使いこまめに確保と解放を繰り返す節約型モデル
・もともと非常に重い3D物理演算を実用レベルで運用する
・もともと複雑で重い3Dの当たり判定処理(コリジョン)をプログラマが手軽に扱えるようにする
これの実現でメモリー制約の厳しいスマホで苦労せずに3Dゲームを作れたり
MMOやオープンワールド系のゲームを作れるポテンシャルを実現している。
FCマリオやテトリス作るなら"main()ループ型"でいいけど、モンスターハンター作るなら"main()ループ型"では死ねるよという感じ。
実際に何かを作ってみると分かるが当たり判定(コリジョン)は"main()ループ型"で回して中でいちいち判定するより
オブジェクト1つ1つにC#スクリプト埋め込んで当たった時に勝手に「当たったよ!」とイベント通知してきてくれる方が100%楽。
余談だが、UnityやVisualStudioのようなGUIでモデルを配置できるエディッタ時代ではなく、コマンドプロンプト時代のCUI時代にソースで扱っていたクラスのカプセルの概念、あれをビジュアル的にも再現できている今のUnityのモデルだとも感じてる。
今のUnityのやり方が、昔に目指されていたオブジェクト指向プログラミングの1つの完成形・理想形なんじゃないかと思う。
アセットの概念なんかはまさにオブジェクト指向プログラミングのカプセル可の恩賜だと思うよ。
とても勉強になる回答内容に感激しました。
私はその昔ながらのmain()ループのやり方で生きて来たクチなので
Unityのマニュアルやチュートリアルに目を通し(熟読はしていませんが、
非常に困惑しているところだったんです。
ステップアップ先生の話を聞いた限り、仮にUnityでFCマリオを制作するとしても、
昔ながらのmain()ループのやり方をUnityで実行するより、
本来はUnityモデルを覚えて作った方が"ラク"だよ、ということですよね?
例えば当たり判定〜のくだりは確かにそっちの方が確実にラクなのが理解できますし。
それとも「いや、FCマリオくらいのゲームしか作る気ないなら、
この先Unityを覚えて制作せずとも、>>333333(1): THE・シンプル先生 [sage] 2018/08/04(土) 15:07:18.36 ID:KOItUBKr(1/2) AAS
>>312
自分で工夫する事で昔の「main()ループ」に近い物が作れる。
?:空のゲームオブジェクト(Empty)を適当な位置に作る。名前は仮に"GameMain"としておく。
?:次に適当な場所に"GameMain.cs"と仮の名前でC#スクリプトを作る。
?:?を?にアタッチ
?:?の中にprivate属性などGameObject型の動的配列の"元だけ"を宣言 → 例:GameObject[] Enemy;
?:?の"start()"などで実際に必要な数の配列を作成 → 例:Enemy = new GameObject[3];
?:"GameObject.Find("※オブジェクト名").gameObjectを使い、先程作成した配列にシーン上のGameObjectを関連付けていく → 例:GameObject[0] = GameObject.Find("Enemy0").gameObject;
?:後はGameObject[0]を使う
当然他のやり方も無数にある。
のUnityの中で擬似main()ループで作る方が断然ラクだよ」とかですか?
というのもmain()ループのやり方が染み付いてしまっている私自体、
ゲームの処理には中心となるがループを置いて、
そこからすべての流れを構想してしまうオツムなんです。
Unityモデルは全オブジェクトが個々で処理され、バラバラに存在している感じ?というか
各オブジェクトや処理に非常にふあふあしていると感じました。
もちろん自分のUnity理解度がまだ足りないせいなのは重々承知してますが
アセットやツールで解決するそれぞれの処理がブラックボックスすぎて、
初心者としてはそれらの応用が難しい。
アニメーション描画も、正直配列に各画像を入れ込んでフレームで回す方がラクなのに、
AnimationEventを使ってメモリを動かしてイベントの制作をしなければならない?のも余計ややこしく感じます。
結局、ソースだけで解決できないエンジンなので例えFCマリオであっても
Unityを覚えないと作れないことにちょっと面食らっています。
それらもステップアップ先生のおっしゃる通り
3Dや中〜大規模のゲーム作成も想定されたUnityだからこその仕様なのだと理解しましたが
どうなんでしょうか、私が2Dオンリーのゲーム制作目的であっても
Unityモデルで制作方法を覚えた方があとあと必ずラクになりますか?
変な相談ですみません。
362: 弟子 ◆rZPPjYuxmQ [sage] 2018/08/05(日) 22:41:53.80 ID:9xb2C49y(3/4) AAS
>>361そだよ
だから、でしゃばんな
377: 名前は開発中のものです。 [] 2018/08/07(火) 17:12:34.80 ID:fUL+ini3(2/2) AAS
>>376376(1): 名前は開発中のものです。 [sage] 2018/08/07(火) 15:17:47.36 ID:XJ39evIU(2/3) AAS
>>374
スマホだとわかりにくいけど、目次からweb版(無料)が見られるよ。探せなければpcで。それだけできてるなら6.10、17.2あたり見ればヒントになると思うよ。
ありがとう
ボタン設置やハンドルの表示は分かるんだけど、例えばシーン上のどこかをクリックしたらその座標にオブジェクトを生成するとして、それだけなら出来るんだけど他のオブジェクトをクリックしたときに、そのオブジェクトを選択したことになってしまうんです
terrainで編集中だとシーン上で他のオブジェクトをクリックしたとしても、そのオブジェクトが選択されたりしないよね?
まずは、シーン上でオブジェクトをクリックしても選択しないようにしたい
単純に「シーン上でオブジェクトを選択不可にする方法」ってのはぐぐったら出てきたんだけど、スクリプト込の記事がないんだよね
あとは、例えばterrainならterrainDataいじってterrainの新しい機能を作りたいと思ってるんですけどね
389(2): 名前は開発中のものです。 [sage] 2018/08/07(火) 23:56:38.80 ID:FHXvAGCS(1) AAS
>>381Updateで昔ながらの60fpsをやるなら、まずコードのどこかでApplication.targetFrameRateに60を設定する
メニューからQuality SettingsのVSync CountをDon’t Syncにする
同じくメニューからTime ManagerのMaximum Allowed Timestepを1/60にする
これでほぼほぼUpdateが60fpsになるはず
431: 名前は開発中のものです。 [] 2018/08/16(木) 08:17:34.80 ID:Rx2cVzvB(1/2) AAS
2000x2000とかの大きなterrainだと、遠くの山が描写されず、近づくと表示されて気持ち悪いんですが、描写される距離を設定で変えたりできますか?
木や草を描写する距離などはterrainの設定から出来るんですが、terrainそのものの描写する距離を変える設定が見つかりません
441(2): 436 [] 2018/08/17(金) 22:52:26.80 ID:Cl208u38(2/2) AAS
プレイヤーコントローラーのスクリプトは下のスクリプトで右クリックでアタック時にSetActive
でコライダを表示するようにして敵を攻撃する当たり判定にしてるんだけど、一回攻撃するとコライダ出っぱなしになる
消すように色々ためしたけど上手くいかない、アドバイス頼みます
public GameObject AtariHantei;
void Update()
{
//アタック
if (Input.GetMouseButtonDown(1))
{
this.animator.SetTrigger("AttackTrigger"); //アニメ再生
audioSource.PlayOneShot(AttackSE, volumeSE); //AttackSE
AtariHantei.SetActive(true); //コライダon
}
447(1): 名前は開発中のものです。 [sage] 2018/08/18(土) 11:18:41.80 ID:CpHT33yN(1) AAS
>>441
アニメーションイベントを使うといいよ
具体的なメリットはアニメーションの好きなフレームでコライダーのオンオフできるところ
現状だと、例えば剣を振りかぶる動作の途中なのに敵がダメージ食らったりしてると思う
詳しくはウェブで!!
外部リンク:gametukurikata.com
475: 帝王 [sage] 2018/08/25(土) 11:58:14.80 ID:YP3VndSY(2/2) AAS
RegacyではなくLegacyでした
508: 名前は開発中のものです。 [sage] 2018/09/02(日) 17:50:26.80 ID:y/8eZbrS(1) AAS
w
529: 名前は開発中のものです。 [sage] 2018/09/07(金) 21:54:41.80 ID:9OXGk4KY(1) AAS
>>528528(2): 名前は開発中のものです。 [sage] 2018/09/07(金) 19:42:20.51 ID:lsD5Bh9y(1) AAS
オブジェクトの位置をインスペクター初期に設定した位置に戻すのって
初期にオブジェクト位置を取得しておいて
戻したい時にその取得値をぶっこむしかいないですか?
なんか簡単にインスぺの初期値を取得するのってないんですか?
例えるならこんな感じのです
transform.localPosition = Vector3.inspecterReset
または
transform.localPosition = new Vector3(インスぺ初期値, インスぺ初期値, インスぺ初期値)
なんで、それじゃあかんの?
558: 名前は開発中のものです。 [sage] 2018/09/16(日) 16:41:29.80 ID:WeoJYzw7(11/11) AAS
>>552ありがとうございます!
スケールの部分ですよね
789(1): 名前は開発中のものです。 [sage] 2019/02/06(水) 18:17:08.80 ID:NkrMwY76(1) AAS
WaitForSecondsの例でいえばループ毎にnewしてるなら
それは無駄なGCが走る可能性のあるコードでしょ
必ず別の場所にキャッシュするよう変更できるってモンでもないけど
可能なら避けるべき
890: 名前は開発中のものです。 [sage] 2019/02/18(月) 17:50:43.80 ID:yrBo1uxS(1) AAS
レイヤー分けてレイヤーで判定
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.052s