[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/21 15:00 / Filesize : 330 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【3Dゲームエンジン】Unity質問スレッド21



1 名前:名前は開発中のものです。 [2015/11/18(水) 00:53:16.90 ID:6AegDlBR.net]
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>970を踏んだ方が建てること。ダメなら>>980>>990が建てて下さい。

■本スレ
【3Dゲームエンジン】Unity総合スレッド27 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/gamedev/1441891966/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
unity3d.com/jp
・ユーザーガイド
 docs.unity3d.com/ja/current/Manual/UnityManualRestructured.html
・チュートリアル
 unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 unity3d.com/jp/unity/faq
・MSDN
 msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。

前スレ
【3Dゲームエンジン】Unity質問スレッド20 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/gamedev/1444194744/

396 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 19:29:02.93 ID:LhrOBBwU.net]
>>384
ゴメン、そこも間違ってるw
for(direct=0;direct<3;direct++){
if(detect[direct]==false)probability-=weight[direct];
if(probability<=0)break;
}
だな

397 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 19:39:09.72 ID:YZpvL1m9.net]
>>385
理解できました!(たぶん!)
あと、for文ってこう活用するのかと目から鱗です。
ありがとうございます、プログラム難しくてへこたれそうになってたけどやる気出てきたよ!

398 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 19:43:36.95 ID:WI4Qgc9H.net]
>>375
そのメカニムで移動させた直後に、別途自身の座標取得して書き換えるだけですよ
こんな感じ↓で

Vector3 pos = obj.transform.position;//objは移動させたキャラ自身(GameObject)
pos.z = 1f - pos.y / 100;//キャラ描画の奥行き基点を1.0としてます
obj.transform.position = pos;

…というか移動でtransform.positionいじるはずだから、そこにzも一緒に放り込む処理追加するだけかと

399 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 22:00:38.05 ID:t/zKap4N.net]
コントローラーで操作できるようにしたかったのでこんな感じに書いてみたのですが、
ベクトルの大きさを表示してみたところ、上下左右をぴったり入力すると1と出ますが
斜め入力だと最大1.5ぐらいの大きさになってしまいました。
ゲームパッドのジョイスティックって三角関数のような円単位で表せられるものでは
ないのでしょうか?
そうであれば斜め入力で上下と等速にするためには、加筆しないといけないですよね。



private Vector2 JoyStick;

void Update () {
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));

if (JoyStick.magnitude > 0) {
transform.position += transform.forward * JoyStick.x * Time.deltaTime;
transform.position += transform.right * JoyStick.y * Time.deltaTime;
}
print (JoyStick.sqrMagnitude);
}

400 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 22:33:23.42 ID:LhrOBBwU.net]
>>388
アナログスティックはともかく十字キーはOnかOffだけだろう。
まぁ加筆自体は
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));
joyStick.Normalize();
だけでいいだろうが。

401 名前:名前は開発中のものです。 mailto:sage [2015/12/04(金) 22:36:03.89 ID:LhrOBBwU.net]
ああ、それじゃダメか…
if(joyStick.sqrMagnitude>1)joyStick.Normalize();
かな

402 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 01:09:13.49 ID:Ip323cCd.net]
Macでの質問です。
El Capitanにアップデートしたところ、今まで使っていた痛MonoDevelopが起動しなくなりました。
痛の方を使っていた理由は、日本語入力ができるからです。
一度削除して入れ直してみても同様で、起動しようとすると原因不明のエラーで落ちます。

そこで、いろいろネット上を調べると、Xamarin Studioなら日本語入力できるとのことで
早速入れてみました。
バージョンは5.10.1でおそらく最新です。
しかし、日本語入力はできませんでした。
El Capitanで日本語入力のできている環境の方、いらっしゃいますか?
また、解決法などわかる方いましたらお願いしますm(_ _)m

403 名前:388 mailto:sage [2015/12/05(土) 02:00:05.01 ID:iKztX7xZ.net]
>>389
質問の意図をうまく表現できなくて申し訳ありません。
変数名がジョイスティックなのでアナログではないです。
せっかくジョイスティックを使うので、傾きを考慮して
最大値を1とし、中間の傾きも考慮したいために
質問した次第です。

404 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 02:36:03.65 ID:tPuulIVh.net]
こんな感じで2D格闘ゲームみたいにアニメーションに併せて箱の組み合わせで当たり判定を付けたいのですが
www.capcom.co.jp/blog/sf4/development_blog/2011/02/22_3050.html
アセットストアなどに良さそうなものないでしょうか?
今はBOXコリダーを置いてon/offでやってるのですが膨大になりすぎて…



405 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 02:58:27.63 ID:B0/pRd/x.net]
>>392
機器としてのジョイスティックが吐き出す縦軸横軸の数値が
君の言う円単位的なもの(恐らく正規化されているかということだと思うが)
になっているかと言われると恐らく違う。
物理的な作りにもよると思うが基本的に斜めに倒せばX=1 Y=1の数値を吐き出す。
イマドキのゲームパッドについているアナログスティックも大体同様だろう。
斜めに倒せばベクトルの大きさはルート2=1.414とかになる。

406 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 03:17:31.29 ID:qe0RLnbZ.net]
>>391
一通りやってみた
確かにmono developでは日本語入力対応してなかったし
Xamarinも惜しいとこで入力できなかった
でも痛、、の方は動いたし、日本語入力できたよ
動かないというのがどう動かないのかわからんから調べようがないけど
未認証アプリは動作しない設定のせいだったらFinderでアプリケーションから
右クリックで開く、から1度でも動かしとけばいけると思う
そうでないなら動作しない状況を教えて

407 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 03:21:17.22 ID:qe0RLnbZ.net]
あ、動いた痛のほうのバージョンは5.9.6ね

408 名前:391 mailto:sage [2015/12/05(土) 09:45:01.07 ID:Ip323cCd.net]
>>395
ありがとうございます。
動かないという部分を詳しくいうと
・Unityから起動しようとしたら真っ白いウィンドウが1秒くらい出た後に消え、
 「MonoDevelop-Unity が予期しない理由で終了しました。」と表示が出る
・Finderから単体を起動しようとしても同じ
・古いのを消し、新しいものを「けいごのなんとか」ブログから落としてきてインストール後
 開こうとすると「ネットから落としたものだけどいい?」と聞かれるので許可
 →同じようにFinderからでもUnityからでも「白いウィンドウ→予期しない理由で終了」となる

今気づいたのですが、昨日ブログにあるリンクから落としたものはFinderで情報を見ると
5.9.4となっているのが気になります(5.9.6ではない?)
Finderから「情報を見る」でバージョン確認でも5.9.6になっていますか?

El Capitanは10.11.1、環境はMacBook Pro (Retina, 13-inch, Late 2013)、メモリは16Gです

409 名前:名前は開発中のものです。 [2015/12/05(土) 11:30:18.55 ID:A+8m8HuO.net]
Unity5.1のカラーピッカーの質問です。

HSVの理解が足りてないのかもしれませんが、
HSV(0,255,255)とHSV(359,255,255)って別の色の筈ですよね?

Unityのカラーピッカーで359を指定して、
一旦カラーピッカー閉じて開くと0に戻っていて、
なんだか359と0を同一にしているような気がします

というかHexColor見ても、
HSV(0,255,255)でFF0000
HSV(359,255,255)でもFF0000
なので、

もしかして、UnityのHSVバグってます?
それとも自分の計算と頭がバグってます?

よろしくお願いします

410 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 12:31:35.64 ID:0UL6qy5F.net]
>>398
推測なんだが内部的にHSVの形では保存していないのだろう。
実際UnityEngineにはHSVカラーの構造体とかないしね。
HSVのインターフェース部分だけがHSV構造体をもってるだけで
実際にシリアライズされてるデータは変換されたColor32だったら
359=0という処理をしていても不思議ではない

411 名前:名前は開発中のものです。 [2015/12/05(土) 15:59:48.53 ID:vToW6z9I.net]
3Dサウンドに関して質問です。
動画のサウンドは3Dサウンドに対応していないのでしょうか?

412 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 16:47:24.16 ID:ocXKSXt2.net]
スマホ実機で実行してみたら画像がそれぞれにしょぼくなってました
画像の1つにオーバーライドにチェック入れてTruecolorにしたら
直ったけど全部の画像にこれやるのが普通なんでしょうか?

413 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 17:36:38.15 ID:TKKOGjwy.net]
>>401
複数選択で一度に変更できるよ
フォルダ細かく分けてるとめんどいけど

414 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 17:44:36.90 ID:ocXKSXt2.net]
ありがとうございます!
まとめて変更できたとは
メモリ使用量がちょっと心配だけど全部変更しちゃいます



415 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 18:24:43.14 ID:6BZRm6u4.net]
複数のSpriteからAnimationClipを動的に生成したい
www.gaprot.jp/pickup/tips/unity5_for_2d/

> Sprite アニメーションの AnimationClip を作るには
> UnityEditor パッケージに含まれているクラスを使う必要があり、
〜中略〜
> いざ Build を行う際には UnityEditor パッケージは Build の対象外となるため
> Build が出来ないという結果で終わってしまいます。

上で話題になってた2D強化って、ここら辺の仕様も変わるんだろうか
Clip数百個とか作りたくないなぁ

416 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 21:40:07.17 ID:iKztX7xZ.net]
>>394
よく見たら1.5ではなく1.15ぐらいでした。
数値的には納得いかないのですが、以下のコードにて無事に動作しました。
ありがとうございました。

private Vector2 JoyStick;
void Update () {
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));

if (JoyStick.magnitude > 1) {
JoyStick.Normalize ();
}
transform.position += -1* transform.forward * JoyStick.y * Time.deltaTime;
transform.position += transform.right * JoyStick.x * Time.deltaTime;
}

417 名前:名前は開発中のものです。 mailto:sage [2015/12/05(土) 22:52:19.63 ID:5cP0RmJy.net]
>>391
>>397
もう解決したかもしれないけど。
「MonoDevelop-Unity 5.9 Preview Release」でググったら出てくる
Unity Communityのやつをダウンロードすると幸せになれるかも。
上のフォーラムの「Minimun Requirements」に記載されているバージョンが
あなたの使っているUnityの条件に合えばだけど。

今のところうちのEl Capitanでは普通に日本語打てるし動作も問題ない。
ちなみに数日待つとUnity5.3が出るけどそれには上のMonoDevelopが含まれるってさ。

418 名前:391 mailto:sage [2015/12/05(土) 23:56:34.22 ID:Ip323cCd.net]
>>406
おおお!幸せになれました!
そこのをダウンロードしてみて、開く前に情報を見たところ
やっぱりなぜか「5.9.4」となってて、あーまたダメか…と思ったんですが
こっちは開くことができ、日本語入力もできました!
ありがとうございます!

419 名前:391 mailto:sage [2015/12/06(日) 00:04:50.30 ID:SqhYBxP8.net]
ちなみに開いてからAbout MonoDevelopで確認するとちゃんと5.9.6になってる…謎

420 名前:398 mailto:sage [2015/12/06(日) 12:37:32.08 ID:Xo25Ei6c.net]
>>399
ありがとうございます〜
コード書いてると、RGBよりHSVの方が出番多いような気もするので、
気持ち悪いなーと思ってしまいます

421 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 12:53:57.93 ID:M7EELMn9.net]
>>408
痛のほうも同様だy,多分中身は同じと思うコアの部分はね

422 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 13:41:50.12 ID:uKAERiPd.net]
ネット麻雀みたいなのを支えるBaasでやすいのってないかな?
Photon程のリアルタイム性がなくていい代わりに安くてUnityから使いやすいのがほしいんだけど・・・・だれか教えて!

423 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 14:44:59.63 ID:698J1662.net]
Google App Engineかな
Datastoreの使い方間違うと課金膨れ上がるけど、上手くやればユーザ増えるまでは無料枠で捌けると思うよ

424 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 18:17:22.09 ID:uKAERiPd.net]
Google App Engineは確かに忘れてました
料金を調べてみます
趣味でゲームを作ろうと思っているのですが毎月数万円マイナスだときついので安ければ安いほど助かるんです



425 名前:名前は開発中のものです。 [2015/12/06(日) 18:24:04.50 ID:tut05Xyo.net]
void OnCollisionStay(Collision col)
{
if (col.gameObject.name == "Cube(Clone)")
{
Destroy(gameObject);
}
}

このScriptを破棄したいオブジェクトAにアタッチして
Cube(Clone)に接触したらオブジェクトAを破棄するようにしているのですが
"2つ以上のCube(Clone)と接触したら破棄する"といった条件はどう書いたらいいですかね?

426 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 19:02:41.83 ID:5yO0Yl9X.net]
新しいPCにUnity入れたんだけど30分毎に落ちる・・・

427 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 19:23:47.40 ID:y/4U1a0N.net]
>>414
いくつぶつかっている、みたいなのを判別してくれる便利関数はない。
自分でCollisionEnter,CollisionExitとかで数えるしかないな。

428 名前:名前は開発中の物です。 [2015/12/06(日) 19:45:59.82 ID:z4APy23j.net]
>>387
すいません、スクリプト自体はコピペで書いてある文字は全然わからないです・・・。
下のスクリプトで動かしているのですが、どう書けば良いのでしょうか・・・
void Update () {
if(animator)
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
walking = true;
if (h > 0) {
directionX = 1;
directionY = 0;
} else if (h < 0){
directionX = -1;
directionY = 0;
} else if (v > 0) {
directionX = 0;
directionY = 1;
} else if (v < 0){
directionX = 0;
directionY = -1;
} else {
walking = false;
}
if (walking) {
transform.Translate(new Vector3(directionX, directionY, 0) * Time.deltaTime * 0.5f);
}
animator.SetFloat("DirectionX", directionX);
animator.SetFloat("DirectionY", directionY);
animator.SetBool("Walking", walking);

429 名前:名前は開発中のものです。 [2015/12/06(日) 20:11:29.30 ID:M7dP0Kw0.net]
クイズに答えるだけで「プログラミングの勉強」ができるWebサービスたちにハマる!
plus.appgiga.jp/masatolan/2014/07/29/53133/
小学生でもゲーム制作を可能にするWeb統合エディタ「Tynker」が、
むしろ大人がハマると話題に!
plus.appgiga.jp/masatolan/2015/06/05/56144/
3Dゲームを直接ブラウザ上で制作・公開可能な「Goo Create」が楽しすぎる!
plus.appgiga.jp/masatolan/2014/11/28/54632/
プログラミングの勉強を本気でWebゲーム化した「CodinGame」が時間泥棒確定!
plus.appgiga.jp/masatolan/2014/10/03/53

430 名前:923/
スマホで、プログラミングが勉強できる3Dロボット対戦「Hakitzu」がヤバ過ぎる!
http://plus.appgiga.jp/masatolan/2014/12/12/54802/
[]
[ここ壊れてます]

431 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 20:39:51.98 ID:c7kqWhqV.net]
題名があると読まなくていい記事だと判断できて便利だな

432 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 20:56:01.16 ID:mgi24f37.net]
自作のクラスの、他のクラスからの読み込みについて質問です。

2Dシューティングゲーム - 第04回 敵を作成しよう
https://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki/%E7%AC%AC04%E5%9B%9E-%E6%95%B5%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%82%88%E3%81%86

上記チュートリアルの「Spaceship.cs」は、
使う際は下記のようにインスタンス化?できています。(自分で試しても出来ました)
//----------------------------------
public class Player : MonoBehaviour
{
// Spaceshipコンポーネント
Spaceship spaceship;
IEnumerator Start ()
{
// Spaceshipコンポーネントを取得
spaceship = GetComponent<Spaceship> ();
spaceship.Shot (transform);
//---

対して、今自分で作ったソースでは下記のようにしないと
インスタンスがnullだと言われてエラー終了してしまいます。
//----------------------------------
public void Save() ←実際に使うメソッド
{
Spaceship spaceship = gameObject.AddComponent<Spaceship>();
spaceship.save(text);
//---

この挙動?の違いはどこからくるのでしょうか。
ご教示お願いしますm(_ _)m

433 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 22:07:18.04 ID:e8MyX0tc.net]
>>420
GetComponent<T>()はそのスクリプトが動いているGameObjectにアタッチされているTコンポーネントを取得する、なければnullが返る。
AddComponent<T>()はそのスクリプトが動いているGameObjectにTコンポーネントをアタッチして追加されたものを返す。
つまりそのスクリプトが動いているGameObjectにSpaceshipコンポーネントがアタッチされていないだけだと思う

とりあえずヒエラルキーでそのGameObjectを選択し、インスペクタからSpaceshipを追加すれば動くよ
このような別のコンポーネントがないとまともに動かないスクリプトの場合、付け忘れを避けるために[RequireComponent(typeof(T))]をつけておくといい

余計なお世話かもしれないが学び始めなら公式のマニュアルとリファレンスは読む習慣をつけることをお勧めしとくよ
わからない名前が出たらとりあえずググって公式のマニュアルとリファレンスを読めば自己解決出来るケースが増えるから自分のペースで開発出来る様になる
いちいち躓いて人に聞いてたらゲーム作る前に嫌になって挫折しそうな気がするから自己解決の方法を多く持つのは習得への近道だと思うよ

調べてもわからない事が出てきたらまたここに聞きに来ればわかる範囲で答えるから頑張れ

434 名前:名前は開発中のものです。 [2015/12/06(日) 22:08:56.62 ID:tut05Xyo.net]
>>416
ありがとうございます
下のScriptで無事出来ました〜

int hitNum = 0; //cubeと接触した回数

void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "Cube(Clone)")
{
hitNum += 1; //接触したら接触回数を1増やす

if(hitNum >= 2) //接触回数が2回以上でオブジェクトを破棄
{
Destroy(gameObject);
}
}
}



435 名前:名前は開発中のものです。 [2015/12/06(日) 23:00:24.87 ID:jPU/1I8Z.net]
ここまで丁寧に説明してくれる人がいる事と
それまでの無知全開の流れに良くも悪くもこのスレらしいなと思うのです

436 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 23:02:21.00 ID:mgi24f37.net]
>>421
チュートリアルの方調べたら、ご指摘の通りPlayerのprefabにスクリプトがアタッチされていました。
よくわかりました。

リファレンス、自分では調べたつもりなのですが折れるのが早いのかもしれません…
マニュアルは途中まで読んで飽きてチュートリアルに移ってしまったので、
読破するようにしますorz
助かりました、ありがとうございます!

437 名前:名前は開発中のものです。 mailto:sage [2015/12/06(日) 23:11:08.96 ID:mgi24f37.net]
リファレンスにバッチリ載ってますね…
なんで見なかったんだろうorz

438 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 00:03:16.79 ID:6i/uTLhj.net]
>>424-425
マニュアルもリファレンスも全文読む必要はないというか読んでも最初はわからない単語だらけで理解出来ないで飽きると思う

チュートリアルなどをやっててわからなくなったらその部分を見る方が実体験に基づいて調べるから見落としにくいし覚えやすい
個人的には調べたついでに類似メソッドとの違いを把握出来るとより好ましいと思う

例えばGetComponent<T>を調べたらGetComponents<T>やGetComponentInChildren<T>などを理解しておくと応用が利くといった具合

小さなことから少しずつ覚えて行けばそのうち全体が把握出来る様になるさ

439 名前:名前は開発中のものです。 [2015/12/07(月) 00:38:10.47 ID:nzWuz8jB.net]
複数のオブジェクトを仮置きしておいたのを、
いっぺんに指定のprefabに置き換える方法ってありますか?

440 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 01:17:30.55 ID:kAr350d2.net]
>>417
少なくともコピペしたコードが何をしてるのか理解しようとしてみましょう
そうすればできることがどんどん増えていきますよ

transform.Translate(new Vector3(directionX, directionY, 0) * Time.deltaTime * 0.5f);
ここで移動後の位置を設定してるのはわかるよね?
この「Vector3(directionX, directionY, 0)」がX,Y,Zの指定です

で、ここのZ(今「0」が設定されてる)を直接変えたいところだけど、
「Time.deltaTime * 0.5f」がかけてあり、0.5秒あたりの移動量で設定されてるから、
このtransform.Translateの処理直後に↓これ突っ込んでみたらと

Vector3 pos = transform.position;//今いる場所のxyz
pos.z = 1f - pos.y / 100;//z変更。キャラ描画の奥行き基点を1.0としてyで計算
transform.position = pos;//変更したxyzを上書き

プレイヤー以外のキャラが動くならそちらの処理にも対処入れておかないといけないね

あと2Dということはマップチップも配置してるよね?
ならばマップチップの座標にもZが要るかもね(マップチップは層が違うから基点を変える必要ありです)
マップなどはレイヤーで管理してるとは思うけど…影響がでるなら配置時に設定が必要

そもそもz使って管理するのがメカニムと相性良いかどうかは微妙だけど、作り次第かな

441 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 01:19:27.31 ID:Uj4/ZsVJ.net]
>>427
置き換えられる側のStartやAwakeで置き換えればいいんでないの?
Editorの話?

442 名前:名前は開発中のものです。 [2015/12/07(月) 03:17:41.06 ID:2ZS+ix9z.net]
Editor想定でザクッと書いてみた
using UnityEngine;
using UnityEditor;
public class ReplaceToPrefab : EditorWindow {
[MenuItem(

443 名前:名前は開発中のものです。 [2015/12/07(月) 03:28:42.76 ID:2ZS+ix9z.net]
ミスったので以下に置いてきた
www.dotup.org/uploda/www.dotup.org642133.txt.html
なお、ヒエラルキー上での順序等細かなことはしていない適宜修正されたし

444 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 03:42:13.20 ID:2ZS+ix9z.net]
>>431
自己レスすまん使い方書き忘れ、眠くてダメぽ

ソース読めばわかると思うが、一応以下使い方
メニュー>Window>ReplaceToPrefabという項目を選択
出てきたウインドウで置換先のプレハブを指定する
ヒエラルキーで置き換えたいオブジェクトを全て選択
Replaceボタンをクリックで置き換える

テキトーに書いたためアンドゥが出来ない
細心の注意を払いつつ自己責任で使ってくれ



445 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 12:28:22.25 ID:OKonrqZH.net]
質問です。

c#初心者で勉強中なのですが、よく使うであろう処理を関数にしてみようと思いました。
必要な時はそれに値を入れて、戻り値?をもらうような。
そこで、疑問が湧きました。
その「これこれこういう処理を○○という関数にする」という書き方はたぶん調べればわかるんですが
それを書いたスクリプトは、どこにどう置いておくものなのでしょう?
Unity上の、おそらくシーン上に置く必要がありますよね。
例えばその処理を実際に使用するスクリプトの上の方にでも書いておけばいいのでしょうか?
そうすると他のスクリプトからもその関数を使用する場合、わざわざ他のGameObjectを参照して…とか
やらなければいけないのでしょうか?
根本的なことだと思うのですが、調べ方もよくわからず困っています。
わかる方いましたら教えていただけると助かります。

446 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 12:56:19.37 ID:Uj4/ZsVJ.net]
>>433
いや、プロジェクトに含めて置けばクラスとして参照できるよ
便利関数をまとめとくだけなら、とりあえずstatic classにして静的メソッドとしておけば良いかと。

public static class Utils{
public static int Hoge(){
return 123;
}
}
別ファイルから「Debug.Log(Utils.Hoge())」とすれば123が得られる

447 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 13:00:57.01 ID:Uj4/ZsVJ.net]
調べ方だけど、とりあえずC#の基礎でぐぐればまとまったサイトいくらか見つかるだろうから、分かる範囲で斜め読みしておけば良いかと
Unityスレで言語の基礎知識聞くとスレ違い扱いされて仕方ないところなので、基礎的な質問はプログラム板で初心者スレ探してみて

MonoBehaviourやコンポーネント絡むとあちらではスレ違い扱いされるので、この辺はぐぐって出てくるのがUnityかどうかで判断すればいいかと

448 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 13:15:25.29 ID:5Zo01j7L.net]
unity5.2.1p4において、
player settingのiOS のsplash imageの設定で、
規定のサイズの画像を入れた後にXcodeで書き出して実機テストすると、
端末サイズ(自分の場合640×1136)のsplashの後に
640×960のsplashが表示されて困ってます。
(端末と画像の解像度が違うので画像が潰れている)
おそらくsplash画像をフェードアウトさせる為にunity側でsplashを表示してると思われるのですが、
解決方法はありませんか?

449 名前:433 mailto:sage [2015/12/07(月) 13:16:24.23 ID:OKonrqZH.net]
>>434,435
ありがとうございます。
プロジェクトフォルダに置いておけばいいのですね。
関数を作ってやってみます。

質問に関しては、Unity上のどこに置くのだろう?という質問だったのでここで聞きました。
不適切な質問でしたらすみませんでした…

450 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 16:24:10.23 ID:IwWiwmZk.net]
ゲームオブジェクトにアタッチするC#スクリプトで、
public変数を幾つかのグループ(この場合は効果音)に分け、
それぞれインスペクター上で折りたたみ表示にしたいと思います。

現在、以下のように内部にクラスを用意し、それを実現しています。

public class Player : MonoBehaviour
{
  [TooltipAttribute("効果音")]
  public SoundEffects sfx;

  [System.Serializable]
  public class SoundEffects
  {
    [TooltipAttribute("効果音:攻撃")]
    public AudioClip attack;

    [TooltipAttribute("効果音:ジャンプ")]
    public AudioClip jump;
  }
}

このコードでは SoundEffects クラスがありますが、一度しか使われておらず
なんだかモヤモヤしてしまいます。
より簡潔な書き方があれば教えてください。

エディタ拡張のFoldOutも考えましたが、変数をグループ分けするだけだと
ちょっと大げさすぎるように感じました。
([SerializeField]のような属性で表現できるなら良いのですが)

451 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 16:42:56.04 ID:RRr2nEu0.net]
>>438
折りたためなくてもいいなら[Header("効果音")]でもつけておけばいいと思う

折りたたみたいならエディタ拡張で表示を弄るかクラスを作るしかないが、インナークラスにせずにEnemyクラスとかで使いまわすとか再利用する事は想定されないのかな?

452 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 17:27:37.38 ID:IwWiwmZk.net]
>>439
最初はHeaderにしてたんですけど、
数が多くなるとどうしてもゴチャゴチャしちゃいまして。
変数グループ毎にスクリプトを分けてアタッチ、なんてのも試してました。

あ、もろちん使い回せる部分は使いまわせるようにしています。

453 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 18:41:47.89 ID:kAr350d2.net]
>>437
俺はプロジェクトのAssetsの中にScriptsってフォルダ作ってそこにcsファイル入れてるわ
他にもSpritesやPrefabsなどなど、判りやすく分類してる

あと、シーン上のオブジェクトに関連付けて使うクラスなら、
そのスクリプトをプロジェクトから掴んで該当オブジェクトにドロップすればいいっすよ

ここらへんのやり方はチュートリアルで説明あるからやったら分かるんじゃないかな

454 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 20:10:24.38 ID:kAr350d2.net]
あー、>>441は見当違いなレスだ
なんか読み間違いしてた、すみません



455 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 21:03:24.78 ID:jBIJTjjk.net]
自分が向いている方向(青軸)を0度として、
相手のオブジェクトのある位置の角度は求められるのですが
それが右側にあるのか、左側にあるのか、Angleを使って求めると
分からなくなってしまうのですが、いい方法はないでしょうか?

456 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 21:08:47.05 ID:jBIJTjjk.net]
連投すいません、右側、左側というのは、
青軸を0度として数学で言う第一象限〜第四象限の
どの位置にあるかを求めたいということです。

457 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 21:24:14.87 ID:x8ZuNdat.net]
XZ平面で三角関数解けや

458 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 21:41:52.72 ID:mrT5kF6m.net]
>>443
transform.rightとターゲットへのベクトルの内積が正なら右、負なら左

459 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 22:17:22.32 ID:s5RZFjAL.net]
くっそつまらんことで2週間ほど頭悩ましてるんやが、
指定したボールをボタンを押すたびに時計回りで同じ強さで発射したい

AddForce(initialVector, ForceMode.Impulse);

でinitialVectorの強さをかえると方向は変わるんやが、強さもかわっちまう。強くなる。
で、色々調べてrotateを変更すればとあるが変更してもなんら変わりなし。
rotate(0,20,0)とかrotate(20,0,0)

たぶん何らかの前提となる知識が必要なんだと思うけど、道筋だけでも教えてくれ

460 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 22:50:12.03 ID:kAr350d2.net]
>>447
Rotateで向きを変えて、AddForce(transform.forward * 20.0f)でどうだろうか
※20.0fは強さね

transform.forward で今の向き取得できるから、そこにチカラ加えてあげればいいんじゃないかな

461 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 22:56:30.23 ID:jBIJTjjk.net]
>>446
すぐに内積の事が出てこないとか恥ずかしい限りです。
ありがとうございました。

462 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 23:03:38.90 ID:s5RZFjAL.net]
>>448
返信どうも

ボタンが押されたら実行
{
CreateDummyBall();
_dummyBall.transform.Rotate(new Vector3(10, 0, 0));
//_dummyBallController.transform.Rotate(new Vector3(10, 0, 0));
_dummyBallController.Shot(Vector3.forward * 10);
}

private void CreateDummyBall()
{
_dummyBall = (GameObject)Instantiate(this.dummyBall, Vector3.zero, Quaternion.identity);
_dummyBallController = _dummyBall.GetComponent<dummyBallController>();
}

shotの中では

this.GetComponent<Rigidbody>().AddForce(initialVector, ForceMode.Impulse);

これでうまくいかん・・・
何が腐ってるんだろうか・・・
コメントアウトも試した

怪しんでるのはthis.GetComponentと_dummyBallの紐付き

463 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 23:24:44.15 ID:kAr350d2.net]
>>450
shotのAddForceを
AddForce(transform.forward *10, ForceMode.Impulse)ではだめですか?

464 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 23:29:23.77 ID:s5RZFjAL.net]
>>451
ごめんなさい

変に省いちゃったのがだめだった

public void Shot(Vector3 initialVector)
{
this.GetComponent<Rigidbody>().AddForce(initialVector, ForceMode.Impulse);
}


ってなってるんだ

で、先ほどのコードはこのショットを呼び出してる



465 名前:名前は開発中のものです。 mailto:sage [2015/12/07(月) 23:53:25.18 ID:kAr350d2.net]
ごめんね、考え汲み取れなくて

じゃあ、
 _dummyBallController.Shot(Vector3.forward * 10);
  ↓
 _dummyBallController.Shot(_dummyBall.transform.forward * 10);
こうではないのん?
上で回転させた&打ち出したいボールは_dummyBallですよね

個人的には、shotに強さと向きを引数で渡して、
shotの中で回転させて、AddForceでforwardに強さかければスマートな気はします

466 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 00:00:36.93 ID:YWarlEDs.net]
>>453
こちらこそ省いて申し訳ない

>上で回転させた&打ち出したいボールは_dummyBallですよね

ですです。そうですね、ご指摘のとおりの実装が正しいと思います。

で、Startメソッドの中で_dummyBall.transform.forwardを取得すると

"(0.0, 0.0, 1.0)"

_dummyBall.transform.Rotate(10f, 0f, 0f);

実行後に_dummyBall.transform.forward

"(0.0, -0.2, 1.0)"

という値が取れて思うように回転してくれないっすね

この辺に関しては回転の概念を学ばなくてはならなそうです

467 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 00:08:29.98 ID:LZ7q6pwb.net]
壁だらけのダンジョンを歩き回る敵のアルゴリズムをちまちま作ってて、納得がいく動きになったから
意気揚々とマップに5体くらい配置してみたら途端に変な動きをするようになった・・・

単体だと問題ないけど複数配置しておかしな挙動になるってことは、ひょっとしたら
変数の値を共有しちゃってるのかな?と思ってc#入門とかを見ると
省略するとprivateになると書いてあるので、当てはまらなそうです(publicな変数は特に使ってません)

こういう現象って他にどんな原因が考えられますかね…??

468 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 00:25:15.51 ID:YWarlEDs.net]
>>454
自己解決

Rotateとは軸となる座標を指定するというのが味噌
Rotate(0,10,0)であれば、Y座標に軸、つまりこまみたいなイメージ
そこから指定した数字だけ回転(角度)する

469 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 00:27:27.59 ID:YWarlEDs.net]
>>455
情報が少ない気がする

470 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 00:32:23.88 ID:lHB0dUDl.net]
>>454
ああ、そうだ…すみません
最初に向いてる方向がZ方向だからそれを目的の時計回りになるところに
まず軸を初期化しないと、だ

ギズモが 
  ↑Y
←□→Z
  ↓   の状態でやるとわかりやすいけど、球のXを変えて力を加えれば球のZ方向に向かって動きます

なのでshotするのが自機だとしたら自機の向きでボールの向きを初期化してから
目的の向きへ回転させて力を加えてください

471 名前:名前は開発中の物です。 [2015/12/08(火) 01:27:43.17 ID:LoOIpgPp.net]
>>428
アドバイスありがとうございます!
z値を利用した画像の前後ができました!

まだプレイヤーを上に動かすと他のオブジェクトより手前に出たりとか・・・。
上下キー以外にも、左右も押すだけでz値が奥行ってしまったりとか。
動画撮ってみました。元が趣味のアカウントで、申し訳ないのですが一番上の三つの記事
が今日の成果物です・・・。
8biskets.tumblr.com

472 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 01:49:12.14 ID:k3T2AEQg.net]
>>455
static変数を使ってると見た

473 名前:名前は開発中のものです。 [2015/12/08(火) 02:21:41.66 ID:tKLb4rQn.net]
質問です。
ボールがあって、床を転がっている間に減速させたいのですが、
摩擦で遅くしようとすると壁に当たった時に(入射角と反射角の)角度が一致しなくなります。
モンOトのように動いて欲しいのですが摩擦で調整することは無理なのでしょうか?

最近始めたばかりの初心者なので、初歩的な質問だったらごめんなさい・・。

474 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 06:24:31.29 ID:D5aX/sPt.net]
>>461
RigidBodyでDragの設定をしてやればそれで減速は可能。
転がしてるならAnglerDragでもいい。
ただUnityは緻密な制御をしたいタイプのゲームには本当に不向きなので
そういうことがやりたくてまだ初めて間もないならUE4に鞍替えした方がいい



475 名前:名前は開発中のものです。 [2015/12/08(火) 06:44:29.24 ID:tKLb4rQn.net]
>>462
アドバイスありがとうございます!
AngularDragは挙動が変わってしまいうまくいかず…orz
Dragの存在をなぜか忘れていたので試してみます!!

UE4ですか…調べてみます_φ(・_・ メモメモ

476 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 10:02:59.28 ID:DCL7l9fw.net]
>>455
始めにfindで自分を見つけてるけど、全部同じ人を見つけちゃってるか
全員が同じインスタンスを参照してる
private云々は関係ない

477 名前:455 mailto:sage [2015/12/08(火) 11:39:15.29 ID:LZ7q6pwb.net]
>>457
ごめんこれ以上なに書けばいいかわからなくて
コードは結構長いし

>>460
ありがとうです、staticは使ってません。
入門サイトなどを読んでも危険そうなものらしいので…(偏見かな)

>>464
インスタンスというのは調べてみます。
findは使ってるので怪しそうですね。その線も調べてみます、ありがとうです!

478 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 12:12:49.88 ID:2F01qqB3.net]
インスタンスはクラスを元にした実体だよ
変数の値を共用かもって書いてるけど、その通り同じオブジェクトを使ってるせいかと
Findはどこからやってるのさ

479 名前:455 mailto:sage [2015/12/08(火) 12:33:15.67 ID:LZ7q6pwb.net]
>>464
報告です、やはりFindでした。
それぞれの方向の判定用に、敵本体の四方に判定用の子を作ってたんですが
その判定を指定するとこでろでFindを使っていたのが原因のようで
これをFindChildにしたらみんなちゃんと動くようになりました。
昨日ずっとこねくり回しても解決せず悩んでたところが解決しました、ありがとうございます!

>>466
インスタンスやクラスや実体など、c#の文献を読んでもその辺がいつもピンとこないんですよね・・・
わかったようなわからないような、という
「取得できる」とか「参照できる」ってよく出てくる単語だけどどう違うの?とか
プログラムの勉強はなかなかに難しいです;

480 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 12:53:40.38 ID:2F01qqB3.net]
このケースで言えば、Hi

481 名前:erarchyに載ってるのがインスタンス
FindはHierarchy全体から探してくるし、
FindChildはそのコードが乗ってるオブジェクトの下(▲がついてる下とか)から探してくる、、
というイメージでいいのかな。環境によるかもだけれど
[]
[ここ壊れてます]

482 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 13:02:28.95 ID:LZ7q6pwb.net]
>>468
あ、Findはどこからというのはそういう意味でしたか。
ヒエラルキーに敵本体の空オブジェクトがあり、その子に3Dオブジェクトや各方向の判定用オブジェクトがあり
スクリプトは本体(親)にアタッチしていたので、探す対象は子でした。

483 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 13:54:16.39 ID:POPm1vgD.net]
unityの4.xと5以降って互換性はありますか?
先輩からもらった本が全部4.xの本で、先輩には「unityの過去verもあるからそれDLして勉強しろ」と言われてます。
自分としては最新ver入れたいのですが、4.xのソースそのままでは動かないでしょうか?

484 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:01:17.85 ID:nh5N6RSZ.net]
どうしてわざわざ今から古いの勉強するのかしら



485 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:04:16.01 ID:nh5N6RSZ.net]
>>461
普通に摩擦係数を設定するのはやってみましたか

486 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:28:21.32 ID:1/R/NX1z.net]
>>470
4系は年末でサポート切れるというかパッチ提供終わるよ。互換性がないわけじゃないけどやる価値はないと思う
先輩に4系の古書押し付けられただけなんじゃね?

本を無駄にしたくないだけなら多少は意味あるけど。バージョン合わせて学べば学習中のトラブルは少ないし、リリースログ追いかけてどう進化したのか追いかけると知識にはなる

487 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:41:01.47 ID:8dEZH0eU.net]
先輩から何冊も本もらったら「いや別に使ってないっす」とは言いづらいよな
進捗とかいちいち聞かれるような状況なら4使っちゃうだろうな俺なら
実際は遠回りでしかないんだけど

488 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:45:37.37 ID:D5aX/sPt.net]
いや〜、4の本は使ってないっすでいいと思うよw
5になってどんだけたってるんだよって話なので(4をいじりながら…

489 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 14:58:25.26 ID:2F01qqB3.net]
練習コードくらいなら
5に4のコード入れると修正していいか聞いてくるからそれでやってもらえば修正箇所あまりないかと

490 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 15:09:25.36 ID:ABVsuJ99.net]
4と5で全く別物って訳じゃないんだから5入れて本の通りやってみればいいんじゃない?
本の通りに入力すると当然の様にエラーが出るからエラーメッセージ読んで対処するw

今更4系触る意味はないし古書押し付けられただけだと思うけど、エラーと格闘するのは確実に身になるよ

レガシーGUI周りだけはエディタ拡張ぐらいでしか使わないからスルー推奨

491 名前:名前は開発中のものです。 mailto:sage [2015/12/08(火) 17:14:28.51 ID:k3T2AEQg.net]
バージョンの話とも関連するけどFindChildじゃなくてTransformのFindと覚えておかないと後で混乱するぞ

492 名前:名前は開発中のものです。 mailto:sage [2015/12/09(水) 00:55:06.58 ID:EADFfwHR.net]
そういえば素朴な疑問なんだけどOnCollision、OnTriggerメソッド系ってどうして
ゲームオブジェクトにRigidbodyをアタッチしてないといけないんだろ。
重力とか衝突とかするつもりないけど触れたかどうかの判定したいだけなのに。
それとも俺がなんか勘違いしてるのかな

493 名前:名前は開発中のものです。 mailto:sage [2015/12/09(水) 01:02:58.59 ID:g4y1GMbr.net]
コンポーネント志向の陰部

細かい機能に分けて依存しあってるってことだよね
ソースコードライセンス得られる方じゃなきゃ真相は分からんのかもな

なんでいちいちtextのサイズ調節でContent size fitterを別で付けなきゃいけないんだとか俺もよく思う
フレームまたがないと変更更新されないし

494 名前:名前は開発中のものです。 mailto:sage [2015/12/09(水) 01:30:16.56 ID:kyZA5n2X.net]
PhysXに処理ぶん投げてるからじゃね?
bulletも同じでPhysicsWorldにブツが無い物は何も返らない



495 名前:427 mailto:sage [2015/12/09(水) 02:26:21.74 ID:nPYSEZLJ.net]
>>429
editorの話ですー

496 名前:名前は開発中のものです。 mailto:sage [2015/12/09(水) 09:04:35.88 ID:GXiFDqkj.net]
>>482
>>431-432にとりあえず動く程度のエディタ拡張が置いてある、諸々テキトーなのでスクリプト読んで自己責任で使うなり修正するなりしてくれ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<330KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef