トップページgamedev
1001コメント394KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/03/10(月) 20:41:34.44ID:xK0J6QXw
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。

Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3他

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

■前スレ
【3Dゲームエンジン】Unity質問スレッド7
http://toro.2ch.net/test/read.cgi/gamedev/1389102625/

■本スレ
【3Dゲームエンジン】Unity総合スレッド21
http://toro.2ch.net/test/read.cgi/gamedev/1388200821/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
 http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
 http://unity3d.com/japan/
・ユーザーガイド&リファレンス
 http://japan.unity3d.com/developer/document/
・チュートリアル
 http://japan.unity3d.com/developer/document/tutorial/
・スクリプトリファレンス
 http://docs-jp.unity3d.com/Documentation/ScriptReference/
・FAQ
 http://answers.unity3d.com/index.html
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0111名前は開発中のものです。2014/03/16(日) 21:23:07.65ID:RZASdfq4
>>109
Z軸の値がずっと0でなければならないのに
0でなくなるということなら0でなくなる理由を
探せばいいんじゃないの?
Z軸の値がオブジェクトもカメラも0のままなら
左右にぶれる訳ないんだし
0112名前は開発中のものです。2014/03/16(日) 21:43:46.87ID:FeVWz7D2
>>111
申し訳ありません、自分のレスを読み返したらすごく言葉足らずでした

2Dのアクションゲームのように
走っている人の横で並走してカメラで撮っているようなイメージなのです
なので速度が一定になってない時に一瞬ブレてしまうのかなと思ったのです
分かりにくくてすみません
今一度、値の様子を見てみたいと思います。失礼いたしました
0113名前は開発中のものです。2014/03/16(日) 21:58:02.79ID:XxgxqIAL
PlayerがFloor(Cube)の上に立っていた場合、
ジャンプできるようにしたいのですが、
現在は以下のようにしてフラグを立てています。

function OnCollisionEnter (obj : Collision) {
  if (obj.gameObject.name == "Floor") {
    isJump = true;
  }
}

ただこの場合、Floorの側面に触れている場合でも
ジャンプできてしまいます。
Floorの上部に触れている場合のみジャンプさせたいのですが、
どのようにしたらよいでしょうか?
0114名前は開発中のものです。2014/03/16(日) 22:27:41.45ID:XDfZsHLe
>>112
プレイヤーの動作→カメラに座標反映→描画ならブレないんじゃね
カメラ→プレイヤー→描画になってるかも知れないから
描画順を明示的に指定してみたらいいんじゃね
http://masa795.hatenablog.jp/entry/2013/04/04/100833
0115名前は開発中のものです。2014/03/16(日) 23:09:45.41ID:FeVWz7D2
>>114
ありがとうございます。参考にさせて頂きます。

移動中の対象物とカメラの距離の値を確認いたしますと
突然大きな値(5→7など)になることがあり
その時に対象物が揺れているように見えていたようです
(すぐにまた元の値まで下がります)
スクリプトの数式も関係しているかもしれませんので引き続き調べてみます
ありがとうございました
0116名前は開発中のものです。2014/03/16(日) 23:25:03.49ID:/edEyusa
>>113
Playerのy座標が、Floorのy座標+Floorの高さであれば上に立っているとみなす
Floorの高さは
Floorのトランスフォーム.GetComponent<MeshFilter>().mesh.bounds.size.y * Floorのトランスフォーム.localScale.y
で求められる

もしくは、空のゲームオブジェクトを作ってFloorの子にして、
コライダを追加し、そのコライダをFloorのちょうど上部のみに設定するとか
0117名前は開発中のものです。2014/03/16(日) 23:42:51.01ID:RZASdfq4
下にレイ飛ばしとけばいいんじゃないの?w
0118名前は開発中のものです。2014/03/17(月) 01:53:54.96ID:soW1W3eA
NGUIでUILabelシステムフォントを使う際、デフォルトだとArialを設定するしかないですが、
これをシステムのデフォルトフォント(iPhoneだとヒラギノ角ゴ ProN W3、AndroidだとDroidSansFallback)にする方法ってないでしょうか
0119名前は開発中のものです。2014/03/17(月) 01:59:50.31ID:WFdjJy90
>>118
ttps://github.com/imkira/unity-sysfont/tree/unity4x
これじゃだめなのか?
0120名前は開発中のものです。2014/03/17(月) 02:39:53.65ID:bChTRHhW
>>110
ない。
4.xからプレファブのネストは廃止された
0121名前は開発中のものです。2014/03/17(月) 03:22:44.62ID:2jAQ20qR
>>88
テキストカラーを表裏で変える件、
丁寧に教えて頂いたおかげでできました、遅れましたがありがとうございます

3DTextが常に前面に表示されることを防ぐシェーダーをスクリプトで呼んでいたのを忘れていたため、
最初動かなくて焦りましたが、それを外すとちゃんと動きました、これちゃんと前後関係もキープ出来て優秀ですね

ありがとうです
0122名前は開発中のものです。2014/03/17(月) 10:37:27.51ID:soW1W3eA
>>119
ありがとうございます、
現在これを使ってるんですがComponent毎にDrawCallが増えて割りとカクカク問題に頭を悩ませてる状態でして、
そんな中Unity4xで必要文字だけ1テクスチャに動的レンダでDrawCall抑えてる公式良いじゃんって状態で今試してる状態なのです。

PS
現在はDroidSansFallbackフォントは手に入ったけどiPhoneのヒラギノやHelveticaフォントが手に入らずで、
もうArialで良いんじゃね?、とデフォルトフォントを取得するプラグイン書く?、ともうDroidSansFallbackやヒラギノを直接指定で良いんじゃね?
で迷ってる状態です。
0123名前は開発中のものです。2014/03/17(月) 11:13:34.60ID:9rLNHxFH
>>113
一般的にはキャラクターObj自体でコライダしないで、フロアチェック用の小さめの空Objをコライダにするよ。
側面と下面で同じ障害物に対する処理変えるのも簡単だし。
0124名前は開発中のものです。2014/03/17(月) 15:43:59.50ID:JM7PP3qJ
TextArea以外でテキスト入力する方法ってありませんか?
TextAreaでも透明にできたらそれでよいのですが、あの見た目は変えれないものでしょうか?
0125名前は開発中のものです。2014/03/17(月) 18:13:19.09ID:JM7PP3qJ
GUIStyle適用で自己解決!と思ったら改行できなくなった
なんでやねん
0126名前は開発中のものです。2014/03/17(月) 19:10:43.06ID:JM7PP3qJ
やりたいことできたけどデフォルトのGUISkinいじっちゃった///
0127名前は開発中のものです。2014/03/17(月) 19:27:44.65ID:WFdjJy90
>>124
TextEditor(PC等),TouchScreenKeyboard(mobile)とか何の為にあるのか小一時間
0128名前は開発中のものです。2014/03/17(月) 22:59:24.04ID:WFdjJy90
>>122
別にarielでも良いんじゃ無いの?
そこまでデバイスのシステムフォント必須ならWebView経由でやれば良いと思うのだけど。

モバイルデバイスのGame上のUIでフォントにこだわるのは解るけど、それがSystem fontってのは解せないよ。
0129名前は開発中のものです。2014/03/17(月) 23:14:11.60ID:+s3dED5b
OnTriggerEnterとかってrigidbodyコンポーネントがないと正常に動作しないんだっけ
0130名前は開発中のものです。2014/03/17(月) 23:20:55.75ID:bhO4sSwZ
    ,,,..-‐‐‐-..,,,
   /::::::::::::::::::::::::ヽ        _,..-‐‐-..,,,
  l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ
  l:l    ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
  ヽ   /   :::::::::::::::::::::::::::::::::::::;-'^~~^'‐;;:l
   ~ヽ/      ::::::::::::::::::::::::::U::ヽミ   .ll
    / / ̄^ヽ   ::::::::::::::::::::::U:::ヽ  ,.ノ ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
    /  |  ・ .|     :/ ̄^ヽ:::::::l'^~ .<
  ‐/-,, ヽ,_,,ノ      |  ・  |:::::::l  <
   l  ~^''     `‐'   ヽ.,_,,ノ  :l  <   | ヽ                     / ̄ ̄\
  '''l^^~~~    / ̄ ̄ヽ    -‐‐‐--l-  <   |  ヽ   __                  |
   ヽ、 ,,,,  | |||!|||i||!| |   ~^'‐..,,_/  <  /    \   |ノ      ――――     /
    / (:::::} | | |ll ll !!.| |    ,,,, イ~'''  < /      \ 丿 アアァァ           |
    l:  ~~  | |!! ||ll| || |   {:::::) ::l    .<                            ●
   l:      | | !   | l    ~~  l   <
   l、     ヽ`ニニ'ノ       ,l>    V V V V V V V V V V V V V V V V VV V V V V
   /^‐-,,____,,,,,,,,..................,,,,,,,__,,,.--ヽ
   ~‐‐'~             ^'‐‐~
0131名前は開発中のものです。2014/03/17(月) 23:31:01.21ID:+s3dED5b
OnTrigger2Dの挙動がおかしいから適当に調べたらなんかバグっぽいな
日本サイトにこれについて言及してるとこなかったから2D機能使ってる人まだ全然いないのかな
0132名前は開発中のものです。2014/03/17(月) 23:41:52.92ID:bhO4sSwZ
    ,,,..-‐‐‐-..,,,
   /::::::::::::::::::::::::ヽ        _,..-‐‐-..,,,
  l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ
  l:l    ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
  ヽ   /   :::::::::::::::::::::::::::::::::::::;-'^~~^'‐;;:l
   ~ヽ/      ::::::::::::::::::::::::::U::ヽミ   .ll
    / / ̄^ヽ   ::::::::::::::::::::::U:::ヽ  ,.ノ ∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
    /  |  ・ .|     :/ ̄^ヽ:::::::l'^~ .<
  ‐/-,, ヽ,_,,ノ      |  ・  |:::::::l  <
   l  ~^''     `‐'   ヽ.,_,,ノ  :l  <   | ヽ                     / ̄ ̄\
  '''l^^~~~    / ̄ ̄ヽ    -‐‐‐--l-  <   |  ヽ   __                  |
   ヽ、 ,,,,  | |||!|||i||!| |   ~^'‐..,,_/  <  /    \   |ノ      ――――     /
    / (:::::} | | |ll ll !!.| |    ,,,, イ~'''  < /      \ 丿 アアァァ           |
    l:  ~~  | |!! ||ll| || |   {:::::) ::l    .<                            ●
   l:      | | !   | l    ~~  l   <
   l、     ヽ`ニニ'ノ       ,l>    V V V V V V V V V V V V V V V V VV V V V V
   /^‐-,,____,,,,,,,,..................,,,,,,,__,,,.--ヽ
   ~‐‐'~             ^'‐‐~
0133名前は開発中のものです。2014/03/18(火) 10:35:27.40ID:n60DNl4U
unityで3Dゲームを作成しています。
javaスクリプト初心者です。
以下のような制御をしたいのですが、
上手くいきません。
アドバイスをいただけますでしょうか。

あるキャラクターで
走る(Mot_run)モーションを再生し、
スペースキーを押すと、ジャンプ(Mot_jump)モーションを
再生する。
ジャンプモーション再生後に走るモーションに戻る

下記が、現在書いてみた式に成ります。

function Start () {
animation.Play("Mot_run");

if (Input.GetButtonDown("jump")) {
animation.Stop("Mot_run");
animation.Play("Mot_jump");
yield WaitForSeconds(1.0);
}
}

すみませんが、
宜しくお願いします。
0134名前は開発中のものです。2014/03/18(火) 10:39:47.20ID:pDVGxoMo
なぜStartに書く
0135名前は開発中のものです。2014/03/18(火) 10:47:37.31ID:n60DNl4U
>>134
133です
こいうことでしょうか

function Start () {
animation.Play("Mot_run");
}

function Update () {
// ジャンプボタン(キーボードではスペースキー)が押されていたら……
// if (Input.touches.length > 0) {
if (Input.GetButtonDown("jump")) {
animation.Stop("Mot_run");
animation.Play("Mot_jump");
// yield WaitForSeconds(2.0);
}
}
0136名前は開発中のものです。2014/03/18(火) 10:48:31.64ID:n60DNl4U
133です
//は無視してください。。。
0137名前は開発中のものです。2014/03/18(火) 11:00:24.42ID:rKb58tri
キーを話したら戻すコードがどこにもみつからないようだ…
あと、最近はキー入力や位置やコリジョンでステートを変えて、メカニムでアニメ制御するのが主流だよ
0138名前は開発中のものです。2014/03/18(火) 11:01:34.53ID:n60DNl4U
133です
下記の式で、ジャンプ出来るようになしましたが、
ジャンプモーション再生後に
Mot_runに戻るには、どう書いたらよいでしょうか?


function Start () {
animation.Play("Mot_run");
}

function Update () {
if (Input.GetButtonDown("Jump")) {
animation.Stop("Mot_run");
animation.Play("Mot_jump");
}
}
0139名前は開発中のものです。2014/03/18(火) 11:05:26.38ID:rKb58tri
ヒント: ジャンプ中フラグ
0140名前は開発中のものです。2014/03/18(火) 11:06:48.48ID:n60DNl4U
133です
メカニムの制御が上手くいかず
簡単な動作なので、javaで書けないかなと模索したしだいです。
0141名前は開発中のものです。2014/03/18(火) 11:22:12.68ID:/owfhMDy
こんなところか?
jsは普段使ってないのでどうもよくわからなくなる

#pragma strict

var jumpflg=false;

function Update () {
if(jumpflg==false){
animation.Play("Mot_run");

if(Input.GetButtonDown("Jump")){
jumpflg=true;
StartCoroutine("Jumping");
}
}
}
function Jumping(){
animation.Play("Mot_jump");
yield WaitForSeconds(1.0);
jumpflg=false;
}

ボタンダウンの名前はJumpかjumpかは環境によるからあれかも
0142名前は開発中のものです。2014/03/18(火) 11:28:46.88ID:/owfhMDy
レガシーでの他のやり方を試してる人もいた

ttp://ameblo.jp/knors/entry-11152990897.html

まぁ色んな書き方がありえるやね
0143名前は開発中のものです。2014/03/18(火) 13:59:33.53ID:BE05TWya
おまえらBasicからはじめろ
マジでw
0144名前は開発中のものです。2014/03/18(火) 14:38:21.08ID:H1iZhyNC
>>127
こういうのあるんですね
自己解決後でしたがありがとう

http://gamesonytablet.blogspot.jp/2013/09/unity-tips-25-textareatextfieldgetset.html
0145名前は開発中のものです。2014/03/18(火) 14:56:27.76ID:4jfRt3Wk
>>141
キャラのアニメーションはメカニムでやった方が楽だと思うよ。
ググるか>>3の1番上の本買えばいい。
javaもcも微妙に書式が違うだけだから、解説本のソース程度なら言語違っても中学生でも変換できる。
0146名前は開発中のものです。2014/03/18(火) 17:29:08.67ID:rKb58tri
Unity5が明日からプレオーダー開始って、これ本当?
http://www.joystiq.com/2014/03/17/unity-5-revealed-includes-improved-lighting-audio/
0147名前は開発中のものです。2014/03/18(火) 19:00:55.08ID:pXoYNSqV
え、昨日NGUI買ったんだけどタイミング悪すぎた?
0148名前は開発中のものです。2014/03/18(火) 19:21:48.23ID:oxPpYWWq
何か素晴らしい新機能でもついてるのか?
0149名前は開発中のものです。2014/03/18(火) 19:26:23.18ID:rKb58tri
ああDevDayで発表してるのか。
いろんな所で記事になってるからUnity5がすぐ来るのは本当らしいや。
こんだけメジャーアップが早いと、Proの更新タイミング難しいな。

http://venturebeat.com/2014/03/17/unity-technologies-unveils-next-version-of-its-game-development-engine-to-make-thousands-of-3d-games-more-realistic/
0150名前は開発中のものです。2014/03/18(火) 20:09:56.86ID:p9/r2rsO
英語がわからないせいで諸々の規約などがチンプンカンプンなのですがどうしたらいいでしょうか?
web翻訳を利用しようかと最初は思っていたのですが、細かい部分を誤解していたりすると
途上での製作中止やトラブルに巻き込まれたりしそうで二の足を踏んでいます
0151名前は開発中のものです。2014/03/18(火) 20:13:23.76ID:QbLk1yXx
>>150
それはunity Japanのセールス担当にメールしてみた方がいいよ
回答のレポヨロ
0152名前は開発中のものです。2014/03/18(火) 22:37:00.29ID:YmT1wzFE
たいした進化もせずバージョンだけ上がっていくな
0153名前は開発中のものです。2014/03/18(火) 23:26:40.30ID:P/D14p+m
広く浅く金をしぼろうと思っていたけど、思っていたより広さが確保できなかったから
深く金をしぼろうとし始めているのか……?
これでさらにユーザーが離れた場合、半年に一回メジャーバージョンアップするようになる?
firefoxが一時期毎月メジャーバージョンアップしてたけど、Unityも……w
0154名前は開発中のものです。2014/03/18(火) 23:51:56.37ID:hcNoBiy2
Adobeは2年、Autodeskは毎年バージョンアップして市場を独占してるから
Unityもその道を行くのかな
0155名前は開発中のものです。2014/03/18(火) 23:55:58.34ID:BE05TWya
そしてアセットでチョンが稼ぐ
ここの底辺どもは売国奴

底辺で売国奴ってひどくね?w
0156名前は開発中のものです。2014/03/19(水) 01:18:02.78ID:2G6YNL7a
>>145
いや単に質問者のやりたかったであろうことを書いただけで
別に自分でそういうやりかたでアニメーション制御を
しようと思っている訳ではないw
メカニムは悪くないがスタイリッシュな手付けアニメーションには
使えんよな〜。ルートの動作を無視するのはそれはそれで
都合悪い面もあって現状どうにも扱い辛いという感じ。
配布してるメカニム用のデータ使って手早く作りたい場合には
すごくいいけどね
0157名前は開発中のものです。2014/03/19(水) 01:41:01.37ID:wDPoGAy0
そう、便利機能使ってると細かく制御したい場合とかにやたら制限があって使えねーんだよな
スクリプトから触れない部分がある分、全部スクリプトからやるしか無いAnimationの方がまだ
マシに思える
FootIKとかLocomotionとか言ってるからフットプレースメント自動でやってくれるのかと思ったら
IKどころかLookAtもProのみ、しかも自分で実装しろだし
触る前からなんとなくそうじゃないかと思ってたけど、方向性がコレだとバージョンアップに期待
持てないな
0158名前は開発中のものです。2014/03/19(水) 02:02:08.05ID:VG97fKdy
今UnityのPro版を買ったら、Unity5が出た時にまた15万必要になるの?
0159名前は開発中のものです。2014/03/19(水) 02:29:36.86ID:2G6YNL7a
今買えば5のProも使える、んじゃないかな
0160名前は開発中のものです。2014/03/19(水) 02:47:34.16ID:SDSqNHTe
Unity使うときの言語ってみなさん何使ってます?
やっぱりC#?
そもそもJavaScriptでファイル入出力とかネットワークとかって実装されてるんですか?
0161名前は開発中のものです。2014/03/19(水) 02:51:22.35ID:slHDE+1D
>>160

Boo一択
0162名前は開発中のものです。2014/03/19(水) 06:03:40.27ID:2G6YNL7a
どうせ中間言語に変換されるんだからなんでもいっしょ
最初から「その人がわかりやすい」ことだけが選択の基準
0163名前は開発中のものです。2014/03/19(水) 07:50:52.86ID:RPRrKser
Unity5だと、かなりメカニム便利になるっぽいな
0164名前は開発中のものです。2014/03/19(水) 08:27:12.87ID:X/tsZDyC
そんなに?
0165名前は開発中のものです。2014/03/19(水) 08:28:43.07ID:2G6YNL7a
え?そう?メカニムの話ってそんなになかったような…。
ルートアニメーションをいじって、とかはできるようになるみたいだが。
あとブレンドシェイプは多分ある程度キー打ったら補完とかはしてくれそう。
今までは自分で補完だったからなw
0166名前は開発中のものです。2014/03/19(水) 08:40:55.28ID:X/tsZDyC
キャラアニメグリグリさせたい人には嬉しいバージョンアップなのか?
0167名前は開発中のものです。2014/03/19(水) 08:50:30.36ID:RPRrKser
ごめん、かなりって言うのは言い過ぎだったようだ
でもFeaturePreviewのムービーの3:40あたりをみると、
アニメーションの細かいステートに対して、個別にスクリプト付けれるみたいだから、自分的には便利機能。
0168名前は開発中のものです。2014/03/19(水) 10:17:06.06ID:THOa4Ppp
>>167
>アニメーションの細かいステートに対して、個別にスクリプト付けれるみたいだから、自分的には便利機能。
マジか!
0169名前は開発中のものです。2014/03/19(水) 11:26:50.49ID:YsWXBeum
UnityコールバックでUpdate -> コルーチン -> LateUpdateと呼ばれる中で、
複数のコルーチンのうちで常に最後に呼ばれるコルーチンを登録する良い方法ないでしょうか。

今のところは新しくStartCoroutineをしたコルーチンから先に呼ばれるのを利用して、
ゲーム開始時にDontDestroyなGameObjectでそれ用にコルーチンを走らせて用意しておくって手が浮かんだんですが、他にもないかなと思いまして。
0170名前は開発中のものです。2014/03/19(水) 15:12:59.70ID:Vx0M5hZZ
コルーチンを呼ぶコルーチンを作る
0171名前は開発中のものです。2014/03/19(水) 16:17:11.80ID:2IaDzqEd
>>168
だったらいっそステートマシンクラス用意してスクリプトで遷移でええやん
それなら糞UIでパラメータの型や条件式制限される事も無いし
0172名前は開発中のものです。2014/03/19(水) 16:52:32.63ID:/GU4WbeQ
どっちにしろメカニムは単純なアニメーション管理にしか使えない
0173名前は開発中のものです。2014/03/19(水) 17:10:23.11ID:THOa4Ppp
>>172
人形限定で大量にアニメーション買っ
たり作ったりしたものを繋ぐのにはすごい向いてるんよ
で、ちょっと特殊なことするのにステートにスクリプトはれるとものすごく楽ができそうってのが魅力
0174名前は開発中のものです。2014/03/20(木) 02:58:20.98ID:v1/C7TpB
00000100001000
00000100001000
00000000000000
11111111111111

こういうのをオブジェクトに変える(実体化する?)のってどうすれば
できますか?
以前どこかのサイトで見た気がしたんですが、忘れてしまいまして・・・。
0175名前は開発中のものです。2014/03/20(木) 07:03:00.21ID:7BlISmN8
こんにちは。
javaスクリプト初心者です。
unity上で、設定したトリガーに、「point」とタグがついたオブジェクト
が入った時、”Mot_run”というモーションが流れているキャラAに、
”Mot_ide”というモーションを流したいのですが、
どのように指定すればよいでしょうか。
トリガーが入った判定まではかけたのですが、
モーションを流す書き方がわかりません。

下記のスクリプトをトリガーに設定しています。
すみませんが宜しくお願いします。
0176名前は開発中のものです。2014/03/20(木) 07:04:18.06ID:7BlISmN8
175です
javaスクリプトは以下の記述になります。
”if (cleared == true) {”からどう書けばいいかわかりません。。。

private var ballCount : int; // pointの総数。
private var counter : int; // ゴールに触れたボールを数えるカウンター。
private var cleared : boolean; // trueならクリアした状態。
// 初期化。
function Start() {
// "point"タグが付いているゲームオブジェクトの個数を調べる。
ballCount = GameObject.FindGameObjectsWithTag("point").length;
}
// トリガーにゲームオブジェクトが入ったときに実行される関数。
function OnTriggerEnter(other : Collider) {
// まず、相手がpointであるかどうかを調べる。
if (other.gameObject.tag == "point") {
counter++;
// カウンターがボールの数に等しくなり、
// なおかつ、またクリアしていない状態だったら……
if (counter == ballCount && cleared == false) {
// クリア成立。
cleared = true;
}
}
}
function OnGUI () {
// クリアした状態であれば……
if (cleared == true) {

animation.Play("Mot_ide”)
}
}
0177名前は開発中のものです。2014/03/20(木) 07:51:17.82ID:SgGcRy2D
これがプレイヤーにつけるスクリプトだと仮定して

ゲームクリアはプレイヤーにつけた変数や関数で
判定すべきなのだろうか、
それはOnGUI()でやるべきことなのだろうか、
あとそのやり方だと同じポイントに何度も触れただけで
回数をこなせばそれでクリアにならないだろうか、

という話を別にすればクリアーフラグを使って
モーションを分岐させればいいんじゃね?
function Update(){
if(cleared==false){
animation.Play("Mot_run");
}
else animation.Play("Mot_ide");
}
0178名前は開発中のものです。2014/03/20(木) 08:22:58.76ID:7BlISmN8
>>177
175です
ご指摘、ありがとうございます。
OnGUI()
→こちら、もともと「クリア」という文字を表示させようとして
使っていたものなので、確かに違いますね。
また、ご連絡いただきました記述に変更すると
モーションがないという指定が出てしまいます。
こちらのスクリプトはトリガーに設定しするので、
アニメを流す対象の指定が必要だと思うのですが、
その記述方法がわかりません。

宜しくお願いします。
0179名前は開発中のものです。2014/03/20(木) 08:29:09.41ID:SgGcRy2D
どうしてもOnGUI()でやりたいなら
ステートを設定してそれでモーションを
管理すればいい。
private var charaStatus=0;

Update(){
if(Input.Get
switch(charaStatus
0180名前は開発中のものです。2014/03/20(木) 08:30:39.41ID:SgGcRy2D
しまったw
うっかりしてミスったw
0181名前は開発中のものです。2014/03/20(木) 08:39:17.58ID:7BlISmN8
>>179
175です
OnGUI()は使わなくて大丈夫です。
ちょっとこんがらがってきましたが、

function Update(){
if(cleared==false){
animation.Play("Mot_run");
}
else animation.Play("Mot_ide");
}
こちらの指定を、現在のスクリプトに追記するとしたら、
"Mot_ide"を流すキャラ指定はどうしたらよいでしょうか?
それとも、このやり方では難しいですか?
0182名前は開発中のものです。2014/03/20(木) 08:39:34.06ID:SgGcRy2D
ゴール側に設定するスクリプトなら
むしろそれをプレイヤー側から
参照してアニメーションを分岐させた方が
いい気はする。
どっちにしてもプレイヤーのUpdate()の中に
animation.Play("Mot_run")が記述されてたら
それに上書きされてしまうんで
0183名前は開発中のものです。2014/03/20(木) 08:47:10.21ID:SgGcRy2D
ゴール側からコントロールするなら
プレイヤーオブジェクトにPlayerタグを設定して
var PlyObj:GameObject;
(略)
function Start(){
if(!PlyObj){
PlyObj=GameObject.FindGameObjectsWithTag("Player").
(略)
}
function Update(){
if(cleared==false){
PlyObj.animation.Play("Mot_run");
}
else PlayObj.animation.Play("Mot_ide");
}
とでもしとけば動くかも。
ちょっと試してないからわからんが。

いずれにしてもプレイヤー側のUpdate()に
animation.Playで他のアニメーション再生が
記述されてたらどうしようもないとは思う。
0184名前は開発中のものです。2014/03/20(木) 08:49:17.32ID:7BlISmN8
>>182
175です。

アドバイスありがとうございます。
それでは、プレイヤー側から参照するには、
どのようにすれば宜しいでしょうか?
度々お聞きする形で申し訳ないです。
01851772014/03/20(木) 12:35:28.28ID:q0+N0x+8
>>184
ゴールオブジェクトにGoalタグを設定して
スクリプト名はGoalScriptだとして
clearedはprivateじゃないとして

var goalObj:GameObject;//←ここにインスペクタでゴールオブジェクト設定してもいい
private var goalScript;

function Start(){
if(!goalObj){
goalObj=GameObject.FindGameObjectsWithTag("Goal");//複数あるならFind("Name")
}
goalScript=goalObj.GetComponent("GoalScript");
}

function Update(){
if(goalScript.cleared==false){
animation.Play("Mot_run");
}
else animation.Play("Mot_ide");
}
とかで動かん?
0186名前は開発中のものです。2014/03/20(木) 13:08:24.36ID:LTHxr9yn
>>174

配列にして処理する
0187名前は開発中のものです。2014/03/20(木) 13:45:29.36ID:NfUKts76
>>185
175です

ご連絡いただきましたスクリプトを試しますと
下記のエラーが出てしまいます。

設定としては、
・先ほどの式を「GoalScript」とする
・「GoalScript」をアニメーションを流したいオブジェクトに設定
・トリガーに「Goal」タグを設定
になります

・Assets/Scripts/GoalScript.js(6,42): BCE0022: Cannot convert 'UnityEngine.GameObject[]' to 'UnityEngine.GameObject'.

・Assets/Scripts/GoalScript.js(12,15): BCE0019: 'cleared' is not a member of 'Object'.
01881772014/03/20(木) 13:48:25.75ID:q0+N0x+8
悪いw
goalObj=GameObject.FindGameObjectWithTag("Goal");
に直してくれw
FindGameObjectsWithTagだとゲームオブジェクト配列が返ってくるっていうエラーだそれは
0189名前は開発中のものです。2014/03/20(木) 13:55:27.31ID:NfUKts76
>>188
175です

一つ目のエラーは消えましたが
・Assets/Scripts/GoalScript.js(12,15): BCE0019: 'cleared' is not a member of 'Object'.
が直らないですね…
01901772014/03/20(木) 14:22:31.15ID:q0+N0x+8
ああ〜すまない。説明不足だった気がする。
まずトリガーオブジェクトにGoalタグを設定する。
OnGUI()の部分を除いた176のスクリプトをGoalScriptという名前にしてclearedはprivateを外す。
var cleared:boolean;
になるってことね。

で、185に書いたスクリプトは名前は何でもいいけどプレイヤーにつける。

ということ。
0191名前は開発中のものです。2014/03/20(木) 14:53:05.43ID:csxXQxSq
175はまずプログラムの基礎やらんとどもならんぞ
01921772014/03/20(木) 15:55:29.72ID:q0+N0x+8
ちょっと調べたんだが確かにおかしくなるな。
#pragma strictが書いてあるならとりあえず外してみてくれ。
そしたら
・Assets/Scripts/GoalScript.js(12,15): BCE0019: 'cleared' is not a member of 'Object'.
がなくなると思う。

どうもネームスペース関係のエラーなんだがjsでどうすりゃいいのかわからんw
0193名前は開発中のものです。2014/03/20(木) 16:07:59.75ID:YcsT/uUP
お、また底辺どもの質問なのかい?

なになに?配列がわかりません?w
だからBasicから勉強しろよwおまえら
いくらUnityがおもちゃでも失礼すぎるぞw
0194名前は開発中のものです。2014/03/20(木) 16:08:59.59ID:csxXQxSq
BASICとかBrain Damagedな言語ありえねぇ
01951772014/03/20(木) 16:29:16.93ID:q0+N0x+8
なんか訳わからなくなってきた。
なんかのバグじゃねぇのかこれw

とりあえず試してみたものを上げておいた
ttp://www1.axfc.net/u/3199313
手前の直方体をwasdで立方体に
触れさせればアニメーションが変化する。
0196名前は開発中のものです。2014/03/20(木) 17:55:36.16ID:7BlISmN8
>>192
>>195
175です

そうですね、
「#pragma strict」は消しているのですが、
ご連絡いただいた設定をしてみましたが、上手くいきませんね。。。

unityの入門書を見ながら作成しておりますが、
ちょっと別のことをやろうとすると、すぐに分からなくなってしまいます。
初めて1ヶ月2ヶ月じゃ中々難しいです。
厚かましい質問ばかりして、本当に反省しております。
0197名前は開発中のものです。2014/03/20(木) 17:57:59.50ID:7BlISmN8
>>195
175です
ご連絡いただきましたデータ、
ためさせていただきます!
01981772014/03/20(木) 18:06:10.38ID:q0+N0x+8
・Assets/Scripts/GoalScript.js(12,15): BCE0019: 'cleared' is not a member of 'Object'.
に関してはMonoDevelopかなんかのバグだと思う。
195であげたものではそのままの構造で動いているので。
実はまったく同じエラーが出てよくわからなかったのだが
#pragma strictからvar cleared:boolean;の行まで消して
書き直したらエラーが出なくなったんで#pragma strictのなんかか?
と思ったんだけどその後書き足してもエラーでなかったんだよねw
上げた奴ではまた消してあるけど。

とにかくそれは理解できてないからとかじゃないよ。
明らかにソフトウェアがおかしな動作をしている。
自分が悪いとか思うべきではない。
0199名前は開発中のものです。2014/03/20(木) 18:10:55.46ID:v1/C7TpB
>>186
ありがとうございます!!
配列について勉強してみます
0200名前は開発中のものです。2014/03/21(金) 14:55:12.25ID:u714flnR
>>195
175です
遅くなりましたが、
無事動かすことができました。
サンプルデータまで作成していただき、誠に有り難うございます。
こちらを参考に、学ばせていただきます!
0201名前は開発中のものです。2014/03/21(金) 15:43:04.93ID:YBntm0MA
AnimationでPositionを現在位置から相対的に操作するのって
空のオブジェクトの子要素にする以外に方法がありますか?
0202名前は開発中のものです。2014/03/21(金) 16:14:20.74ID:I/tIA+/9
スクリプト内で基準位置を記録して操作しても
勿論できると思うが結局のところ
「どうであれ座標計算はしなければならない」
ということを考えれば子供にするのが一番楽なら
それでいいんじゃないか。
Unityがネイティブで計算してくれてるなら
多少なりともスクリプト上での計算よりは早いだろうし。

まぁ何がやりたいのかさっぱりわからんからアレだが
0203名前は開発中のものです。2014/03/21(金) 16:25:45.85ID:fBTRNxEa
var ob[4] : GameObject;
function FixedUpdate(){
if(Time.frameCount % 200 == 1){
var x : int = Random.Range(0,4);
Instantiate(ob[x],transform.position,transform.rotation);
}
}

これはどうして動かないんですか?
0204名前は開発中のものです。2014/03/21(金) 16:28:51.04ID:fBTRNxEa
>>203
自決しました
0205名前は開発中のものです。2014/03/21(金) 16:47:39.72ID:7DZfmW2a
↑また死人がでたのか
0206名前は開発中のものです。2014/03/21(金) 16:49:52.23ID:xb823en3
大航海時代がUnityでワロタ
0207名前は開発中のものです。2014/03/21(金) 17:14:32.04ID:a7pMEZ2l
void Update () {
if (Mathf.Abs(Input.GetAxisRaw("Vertical")) > 0.5) {
rigidbody.MovePosition(transform.position - transform.up * Input.GetAxis("Vertical") * speed);
}
if (Mathf.Abs (Input.GetAxisRaw ("Horizontal")) > 0.5) {
Quaternion nowAngle = Quaternion.Euler(
transform.rotation.eulerAngles.x,
transform.rotation.eulerAngles.y,
transform.rotation.eulerAngles.z
);
Quaternion afterAngle = Quaternion.Euler(
nowAngle.eulerAngles.x,
nowAngle.eulerAngles.y + circle_speed * Input.GetAxis("Horizontal"),
nowAngle.eulerAngles.z
);
rigidbody.MoveRotation(afterAngle);
}
}

水平方向のみに移動したいのでFreeze PositionのYとFreeze RotationのXとZをONにしています。
WASDで前進後進旋回をしたいのですが、壁にぶつかるとキーを入力していなくても勝手に旋回をしてしまいます。
どうすれば壁にぶつかっても勝手に移動しなくなりますか?
0208名前は開発中のものです。2014/03/21(金) 18:19:47.49ID:I/tIA+/9
なんかどう動いてるのか想像がつかんけどw
回転は全てキーでやりたければRigidbodyの
RotationはYもフリーズすればいい。
0209名前は開発中のものです。2014/03/21(金) 19:13:13.60ID:I/tIA+/9
>>201
一応書いとくが
相対位置の基準になるオブジェクトを
RelationObjとして

void LateUpdate(){
transform.position=RelationObj.transform.transform.TransformPoint (transform.position);
transform.rotation=RelationObj.transform.rotation*transform.rotation;
}

とかやってやればキーが打たれていることが前提だが
子供付けしなくても一応相対位置を保持してくれる。
LateUpdateだとカメラとかとのバッティングがありえるからExcuteOrder
とかを指定しておいた方がいいかとは思う。
オブジェクトなしで指定した座標、回転からの相対位置も
勿論全てMatrix4x4とかを使って計算で出せるが
正直めんどくさいだけだと思う。
まぁどうしてもやりたければ座標変換でググれば
いくらでもやり方はでてくる。
0210名前は開発中のものです。2014/03/21(金) 20:10:15.66ID:q8oBe3Mc
>>207
↓みたいに角速度ベクトルを減衰させればどうだろうか
rigidbody.angularVelocity *= 0.75f;
■ このスレッドは過去ログ倉庫に格納されています