【3Dゲームエンジン】 ..
1:名前は開発中のものです。
14/06/26 23:02:03.72 t35CWy1R.net
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他
次スレは>>970を踏んだ方が建てること。ダメなら>>980か>>990が建てて下さい。
■前スレ
【3Dゲームエンジン】Unity質問スレッド9
スレリンク(gamedev板)
■本スレ
【3Dゲームエンジン】Unity総合スレッド22
スレリンク(gamedev板)
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
URLリンク(www24.atwiki.jp)
●リンク
・Unity(日本公式サイト)
URLリンク(unity3d.com)
・ユーザーガイド&リファレンス
URLリンク(japan.unity3d.com)
・チュートリアル
URLリンク(japan.unity3d.com)
・スクリプトリファレンス
URLリンク(docs-jp.unity3d.com)
・FAQ
URLリンク(answers.unity3d.com)
・MSDN
URLリンク(msdn.microsoft.com)←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
2:名前は開発中のものです。
14/06/26 23:03:55.25 t35CWy1R.net
UniqueUnityUsers
1、Hiroki Omae FF14、Dota系、タワーディフェンスなど様々なゲームを製作 Game Jam主催者
URLリンク(twitter.com)
2、GameP-HiRo 「じんどろ」 URLリンク(www.youtube.com) お絵かきマルチプレーRTS
URLリンク(twitter.com)
3、Unity仙人 海外のゲーム製作に携わる 海外ゲーム開発者
URLリンク(twitter.com)
4、TreeBoa じんどろプロゲーマー審査機構JPO
URLリンク(twitter.com)
URLリンク(www.youtube.com)
3:名前は開発中のものです。
14/06/26 23:04:29.81 t35CWy1R.net
Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応←mecanim対応はこれだけ。
URLリンク(www.amazon.co.jp)
Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~←ちょい古い
URLリンク(www.amazon.co.jp)
Unityではじめるゲームづくり←ちょい古い
URLリンク(images.amazon.com)
URLリンク(www.amazon.co.jp)
Unityライブラリ辞典 ランタイム編←英語が読めない奴は必須な。
URLリンク(www.amazon.co.jp)
プログラミングC# 第6版←やさしいC#の方がいいかも。
URLリンク(www.amazon.co.jp)
4:名前は開発中のものです。
14/06/26 23:06:39.45 t35CWy1R.net
テンプレの総合スレのサブドメイン名が変わってたわごめん
5:名前は開発中のものです。
14/06/27 00:08:11.17 +acEvyTk.net
>>1 おつおつ
Webの亜説斗酢斗亜からダウンロードボタンを押してもUnityが起動しなくなっちゃったんだけど、治す方法ないかな?
chromeとfirefox両方ともダメ。
unity本体をアップデートしてもダメ。
unityを起動した状態で、ダウンロードボタンを押しても無反応。
っていう状態。。。
6:名前は開発中のものです。
14/06/27 00:19:58.74 KoiShBp1.net
Unityからストア開けばいいんじゃね?
7:名前は開発中のものです。
14/06/27 00:44:15.26 +acEvyTk.net
unityでのストアは重いので、利便性を考慮してwebからダウンロードしたい
8:名前は開発中のものです。
14/06/27 00:50:10.75 +r9gRlrW.net
物理挙動だけを停止する方法ってなんかある?
専用スクリプトアタッチしていくしかないかな
9:名前は開発中のものです。
14/06/27 01:06:38.79 rWeR6aEN.net
IsKinematicをONにするとかtransform.rigidbody.constraintsを設定するぐらい?
10:名前は開発中のものです。
14/06/27 01:25:10.74 +r9gRlrW.net
ポーズ画面作りたいからシーンの物体全部止めたいんだよね
timeScaleいじる方法もあるけど他への影響が大きすぎる
11:名前は開発中のものです。
14/06/27 02:22:38.83 0xD5IbAP.net
強火で進めってサイトにあった
var num2 = new Array();
num2[0] = [1, 3, 5, 7, 9];
num2[1] = [2, 4, 6];
num2[2] = [-1, 2, -3, 4];
と打ち込んだ後
Debug.Log(num2[0][0]);
ってうっても配列の値がとれないのですが、どうしらいいのでしょうか?
12:名前は開発中のものです。
14/06/27 03:42:45.35 HuTLzuvu.net
とりあえず数値出したいなら
Debug.Log((num2[0]as int[])[0]);
とでも書いておけば出る。
javascript配列はお勧めできない、とはあちこちに書いてあるのでアレだが。
強火で進めのそれはそれでも使いたいなら、ってな記事だろう多分。
13:名前は開発中のものです。
14/06/27 04:28:13.12 IAsKabKV.net
>>11
とりあえず、アセットを買えばいいと思うよ
14:名前は開発中のものです。
14/06/27 09:13:32.57 AtX2djQQ.net
>>12
大変参考になりました。ありがとうございます。
やっぱりダメなんですねえ。
長い時間悩みましたが、これで踏ん切りがつきました。
15:名前は開発中のものです。
14/06/27 12:28:31.08 XcvyZudo.net
unityちゃんのアニメーションだけ使う場合でもライセンス表記いるの?
16:名前は開発中のものです。
14/06/27 12:34:51.73 cmQQ2ePk.net
>>15
assetをかったらいらないよ
17:名前は開発中のものです。
14/06/27 13:15:47.27 D9vvOnzL.net
前スレで頂いたアドバイス「Inputはどのオブジェクトからでも見れるよ」の意味が
未だに理解できません
オブジェクトA(プレイヤー) 十字キーで行動、ボタンを押して調べ物をしたりする
オブジェクトB(プレイヤーが接触する相手) プレイヤーに接触されてプレイヤーがボタン押したら何かする
この場合、オブジェクトB側から「オブジェクトAがXボタンを押した場合」というトリガーを
組みたいのですが・・・
普通にオブジェクトBにif(Input.ButtonDown("x"))・・・だと無理でした
それが出来ないので、今はobjAとobjBの互いで交差するようなフラグ確認処理を行っていますが
若干スパゲティ気味になってしまっています
B側からA側のInputを見れれば全処理をBにするとか、オブジェクトCを作ってCから
AのInputを見たり、とか出来ると思うのですが
18:名前は開発中のものです。
14/06/27 13:45:25.83 cmQQ2ePk.net
アセットをかうとできると思いますよ
19:名前は開発中のものです。
14/06/27 14:11:53.90 sTfUEdhy.net
> Inputはどのオブジェクトからでも見れるよ
ボタンを押すと色が変わるスクリプトを作成
スクリプトを複数のオブジェクトに適用
ボタンを押すと適用した全てのオブジェクトの色が変わるようになる
ってことじゃないの?
20:名前は開発中のものです。
14/06/27 14:28:02.49 D9vvOnzL.net
>>19
なるほど
分かりやすい解説ありがとうございます
では、>>17の場合Inputスクリプトは別スクリプトに書いて
AB両方が持てばいいわけですね
ありがとうございました
21:名前は開発中のものです。
14/06/27 14:32:26.84 2FBemm2K.net
>普通にオブジェクトBにif(Input.ButtonDown("x"))・・・だと無理でした
処理的には問題ないから上手くいかないのは別の原因では?
class ObjectB
{
void Update()
{
if(接触された)
{
if(Input.ButtonDown("x"))
{
何かする
}
}
}
}
こういうことでしょ。特に問題ない。
ただコード的にはInput判定はプレイヤー側(ObjectA)に全部纏めたほうが美しいと思うけどね
22:名前は開発中のものです。
14/06/27 14:43:13.90 D9vvOnzL.net
>>21
一応、今は「Input系はAのみ」「処理はBのみ」程度の区分分けはできているのですが、
obj_AがInput判定する → InputされたらフラグAを立てる → AがフラグAを立てたかobj_Bが見る
→AがフラグAを立てていればobj_B内でフラグBを立てる → フラグBが立っていればBが処理をする
とobj_A〜obj_B相互間でフラグ立てあって、それを確認しあって・・・とやっていて
明らかにおかしなやり方なので何とかした
23:いと思っています 互いのフラグの連携にちょっとでもミスがあれば不具合でますし
24:名前は開発中のものです。
14/06/27 14:54:36.85 sTfUEdhy.net
obj_AがInput判定する
Bのゲームオブジェクト取得
Bのスクリプト実行
おわり
25:名前は開発中のものです。
14/06/27 15:00:50.53 2FBemm2K.net
Unity的にはそういうときにSendMessageを使うんでないの?
自分はSendMessageは処理を追い辛くなってあまり好きじゃないから
参照を持つかマネージャクラスを介してメソッドコールしてしまうけど
26:名前は開発中のものです。
14/06/27 15:07:37.00 D9vvOnzL.net
>>23
なるほど・・・ものすごくスマートにできそうです
ありがとうございます
>>24
メッセージングの使い所がイマイチよく分からないです
同じ名称の処理が複数ある場合は全てコールするとか
コール元はコール先処理が終わるまで待機するなど基本的な仕様は分かるのですが
簡単なゲーム作る程度ならメッセージングは必要ないのかなと思って
あまり理解していないです・・・
27:名前は開発中のものです。
14/06/27 15:08:17.69 D9vvOnzL.net
すみません、気付かずずっとスレ上げてしまっていました
28:名前は開発中のものです。
14/06/27 15:39:19.45 cmQQ2ePk.net
>>25
ASSETSTOREで検索してみるといいよ
29:名前は開発中のものです。
14/06/27 20:02:36.15 sTfUEdhy.net
ニコ生放送終了〜
30:名前は開発中のものです。
14/06/27 20:37:53.61 vLZp1tNm.net
unity上では全く問題ないのですが、androidやPCで書きだすとキャラクターがモーションを行った際
ポリゴンが変にねじれたりバキバキになったりと表示がおかしくなります。
特にひねるような動作を行った際に目立って起こり、blend weightsの問題かと思ったのですがいじっても直りませんでした。
何が原因なのでしょうか?
31:名前は開発中のものです。
14/06/27 21:09:10.80 cmQQ2ePk.net
>>29
アセットストアに行けば解決するとおもいますよ
32:名前は開発中のものです。
14/06/27 23:26:55.74 Cr00NVpI.net
するわけねーだろバーカ
33:名前は開発中のものです。
14/06/27 23:59:36.38 VBUbAcMd.net
Unityを勉強するもうまくいかず
必死に煽って新人を蹴落とそうとするアセットおじさん
もう歳だな
34:名前は開発中のものです。
14/06/28 02:10:37.48 tHwGlC5o.net
ここしか居場所が無いんだよ。
受け入れてあげようよ。
35:名前は開発中のものです。
14/06/28 02:24:38.88 5+vThgL8.net
病人にあなた病気ですねと言っても受け入れたくない気持ちの方が大きいんじゃないかな
病人というのはそういうものだ
36:名前は開発中のものです。
14/06/28 02:31:48.42 yLKDa6TH.net
今ゲームつくってかなり完成に近くなったんだけど、テストプレイとか研磨に協力してくれるような板おしえて
37:名前は開発中のものです。
14/06/28 05:37:02.47 87q0oUAI.net
NGUIのSpriteからRayを飛ばす方法ってありますか?
マウスクリックでRayを飛ばす時のマウスの代わりにSpriteの座標を使いたい
のですが座標の変換がうまく出来ません。
38:名前は開発中のものです。
14/06/28 05:59:22.52 TXgKbcyL.net
>>36
Screen座標が取りたいだけならこうやって取れる
Vector3 SpriteScreenPos(Transform targetSprite) {
BoxCollider bc = targetSprite.GetComponent<BoxCollider> ();
Vector3 pt = bc.transform.TransformPoint (bc.center);
pt = UICamera.currentCamera.WorldToScreenPoint(pt);
Debug.Log("PT:"+pt);
return pt;
}
事前条件はUISpriteやUI2DSpriteのtransformを知っている事とそのスプライトにBoxColliderがある事
39:名前は開発中のものです。
14/06/28 07:34:48.44 87q0oUAI.net
>>37
無事座標を取得出来ました。
ありがとうございます!!
40:名前は開発中のものです。
14/06/28 10:13:38.08 Yk7bXAg4.net
unityちゃんのアニメーションのFBXを3DCGツールで開いて編集したいんだけど
できた人いる?
ブレンダーだと再生できないようなんだが
41:名前は開発中のものです。
14/06/28 11:52:31.81 LZ7/FrJO.net
再生ボタン押したあと非アクティブだと一時停止するのをしないようにできる方法はありませんか
42:名前は開発中のものです。
14/06/28 12:25:50.62 02xn01kM.net
>>39
Maya2014では編集できた
43:名前は開発中のものです。
14/06/28 13:08:19.11 h58mMhhZ.net
>>40
アセットをかえばいいと思うよ
44:名前は開発中のものです。
14/06/28 13:34:08.82 Yk7bXAg4.net
>>41
mayaだとできるのか・・・
ブレンダーだと無理なんかな
インポートのFBXは欠陥品なのか
45:名前は開発中のものです。
14/06/28 14:38:51.36 g+sRFGLs.net
RPGで味方のパラメータを管理するマネージャクラスを作りたいんですが
この場合って普通、抽象クラスって作るもんなんですか?
抽象クラス
┗(抽象クラス継承)主人公
┗(抽象クラス継承)味方キャラ1
┗(抽象クラス継承)味方キャラ2
ってするのがいいんですか?セオリー的に
今はDontDestroyOnLoadのマネージャークラス一つだけ作ってシングルトンにして
そのオブジェクト1つに全ての味方のパラメータを乗せてるんですが、こういう管理は問題ありますか?
46:名前は開発中のものです。
14/06/28 14:41:19.59 g+sRFGLs.net
続きです
シングルトンクラス(DontDestroyOnLoad)
┗主人公パラメータHP
┗主人公パラメータMP
┗主人公パラメータSTR・・・・以下略
┗味方1パラメータHP
┗味方1パラメータMP
┗味方1パラメータSTR・・・・以下略
┗味方2パラメータHP
┗味方2パラメータMP
┗味方2パラメータSTR・・・・以下略
今はこうしています
必要な時(戦闘時など)は主人公オブジェクトからこのクラスの
パラメータをリダイレクトで読み込んで使う、という感じにしています
47:名前は開発中のものです。
14/06/28 14:58:34.55 h58mMhhZ.net
>>44
ASSETSTOREでいいのが売ってるよ
48:名前は開発中のものです。
14/06/28 15:50:24.89 KY7SHBNC.net
>>44
ポリモーフィックに使いたいメソッドがあればそれでいい。無ければそうする必要ない
仕様に依るとしか言えない
44に書いた内容だけで継承の是否を判断できる人はいません
シングルトンの方は必然性が感じられない。普通にクラスを実装してインスタンスを作ればいい
無用にグローバルアクセスできるパラメータを増やすのは混乱の元
49:名前は開発中のものです。
14/06/28 17:01:21.42 g+sRFGLs.net
>>47
ありがとうございます
了解しました
50:名前は開発中のものです。
14/06/28 17:06:07.88 ClpQhuQb.net
>>44
そういった実装面での知識はをつけたいなら「Effective C++」 がとても良い。
ほかにもコーディングスタンダードとか、コードデザインの本は色々あるぞ。
グローバルスタンダード的には、
・インターフェース継承はやるけど、クラス継承はなるべくやらない
・まずはコンポジションで表現できないか検討
ってのがセオリー。
セオリーで行けば、
たとえば「体力」「攻撃力」を管理するクラスを作って、各キャラタイプで内臓(コンポジション)
C#なら chara.status.hp = 10 とかで利用。
キャラクターはすべて ICharacter でも作ってIF継承。
じゃないかなぁ。
明確な理由があれば別にセオリーに反して継承してもいいけど、
自分の配下の若い人が継承を使って表現してたら、何で継承したのかは聞くだろうな。
ポリモーフィズム派IFを継承してれば済む話。
継承はコードが読みづらくなるのよ。
51:名前は開発中のものです。
14/06/28 17:11:47.22 TXgKbcyL.net
>>49
そこはGoFのデザインパターンも一緒に勧めるべき
つか>>49の解説自体デザパタ語彙が入ってるって気付いて欲しい感じ
#ちなみに純粋にデザパタ学ぶとUnityのクラスツリーに疑問を抱く事もあるかもしらん
52:名前は開発中のものです。
14/06/28 19:46:49.19 g+sRFGLs.net
>>49
レスありがとうございます。
なんというか、インターフェイスって実体を持てないので変数宣言できませんよね?
なので普通プロパティを使うんですよね(get;set)
この辺りと、RPGにおけるHPなどの仲間共通のパラメータがどのような
実装になるのかイメージが湧きません・・・
HPとかMPって変数に入れるキャラ単位の定数であって処理じゃないので
それをインターフェイスでどのようにすれば・・・と数時間考えてましたが
ちょっと今の私には技術的に難しいようですし、作りたいものもそんな複雑な
ゲームじゃないので、全味方のパラメータをコンテナ化したコンテナクラス一つ作って
各キャラは、そのコンテナにある自分のパラメータを見に行くようにする、という結論に達しました
まだはじめて間もないので今後C#に慣れてきて、インターフェイスとか抽象クラスを
もっと理解できてきたら、処理を変更しようと思います
せっかくアドバイス頂いたのにすみません
53:名前は開発中のものです。
14/06/28 20:55:09.08 TXgKbcyL.net
>>51
public interface IPlayerParty {
int hp { get; set; };
int dex { get; set;};
// bra bra bra
}
public class SomeNPCanForPartyCharacter : MonoBehaviour , IPlayerParty {
// bra bra bra
}
こんなふうに組んでおいて,
public class PlayerCharactor : MonoBehaviour {
private List<IPlayerParty> _partyMember;
}
こんな事をプレイヤーが制御するキャラクタで持っていればパーティメンバーは扱えるよね?
54:名前は開発中のものです。
14/06/28 20:58:56.31 LZ7/FrJO.net
Timeクラスのtimeを目視したいんですが
Debug.Log(Time.time)とかキャストして表示させようとしてもエラーがでます
一体どうなってるんですか
55:名前は開発中のものです。
14/06/28 21:08:22.02 13iiBkAp.net
unityってメソッドの最初の一文字が大文字なのが違和感ありまくり。
あと、変数名も。
最近はこれがスタンダードなの?
おじさん困惑中。
56:名前は開発中のものです。
14/06/28 21:14:30.19 TXgKbcyL.net
>>54
C#文化なんでソコに文句言われても困る。
自分もメソッド名は小文字で始めたいわいと思うけどコーディングルールのMS標準に合わせるとそう成らざるを得ないよ。
Javaだったら非難囂々だよねー
57:名前は開発中のものです。
14/06/28 21:25:06.89 LZ7/FrJO.net
クラス名と同じTimeをスクリプトのファイル名にしてたせいでした
事故解決
58:名前は開発中のものです。
14/06/28 21:30:21.05 g+sRFGLs.net
>>52
ありがとうございます。
正直、そのコードの理解も厳しいので、もうちょっとUnityというか
C#について頑張ってきます
そのコードについての質問はUnityでなくC#の質問になると思うので
ここでの質問は控えます
ありがとうございました
59:名前は開発中のものです。
14/06/28 21:39:39.95 1D2Rjobc.net
え?Javaってメソッドや変数名が小文字なの?キモすぎる
C#に慣れ過ぎだとこれ
60:名前は開発中のものです。
14/06/28 21:40:52.45 1D2Rjobc.net
小文字じゃねえ小文字から始まるの、です
61:名前は開発中のものです。
14/06/28 21:50:15.58 GbXFYWlE.net
あれ、俺変数名やプロパティはパスカルケースじゃなくキャメルでやってた
混ざってたのかw
62:名前は開発中のものです。
14/06/28 22:36:30.61 UYHm+SxB.net
AnimatorのトランジションInspector上でatomicのチェックを外しておくと
複数のトランジションが伸びているステートなら、一方のトランジションを再生中でも中断して他のトランジションに移れるそうですが
移行するトランジション優先度はどうやって指定するのでしょうか
63:名前は開発中のものです。
14/06/28 22:37:37.38 ClpQhuQb.net
>>57
ほかの人が答えてくれてた。
今は、コードデザインに興味を持つ若手が非常に不足してます。
将来のメインプログラマ不足につながってしまうので、ぜひ頑張ってくれー。
64:名前は開発中のものです。
14/06/28 22:43:40.91 h58mMhhZ.net
>>61
ASSETをかえばできるんじゃないでしょうか
65:名前は開発中のものです。
14/06/28 23:14:23.88 LZ7/FrJO.net
これ何時間くらい勉強すればUniのスクリプトマスターできる?
まだtransformとかtimeとかグラビチィとかLookAtとかのレベルなんだけど
66:名前は開発中のものです。
14/06/28 23:38:07.68 ClpQhuQb.net
ゲームプログラマは、かかっても1週間もあれば自由に使えるようになるな。
後は調べながらだよ。
67:名前は開発中のものです。
14/06/28 23:58:38.04 g+sRFGLs.net
>>64
プログラム全くやった事ないド素人で、1日2時間くらいやって
今3週間目くらいですけど、上手なプログラムとかやり方を選ばなければ
ウインドウ処理以外のRPGの基本処理はできるようになりました
ウインドウ(UI)処理(NGUI)はほんと意味が分からない・・・
unityのスクリプトよりNGUIを使えるか、という方がはるかに不安です
68:名前は開発中のものです。
14/06/29 00:07:22.26 j0JGUa9n.net
ライブラリはひと月もあればだいたい把握できるだろうけど
それができるようになるレベルまでには、全力でやる気注げても2年くらいはかかりそう
全力が続かず散発的に触ってたらさらにもりもり時間かかりそう
69:名前は開発中のものです。
14/06/29 01:28:06.84 xlD1U1/P.net
>>66
アセットを買えばプログラムの知識はいりませんよ
70:名前は開発中のものです。
14/06/29 01:38:41.87 sLVZnAPY.net
>>55
MSのコーティング規約かー。なるほど。
Java専門だったけど、郷に入っては郷に従え。MSコーディング規約に合わせるべさ。
71:名前は開発中のものです。
14/06/29 02:13:04.41 PBgWw+BZ.net
オブジェクトの回転がむずい
72:名前は開発中のものです。
14/06/29 02:18:13.46 xlD1U1/P.net
>>70
アセットを買うと回転も簡単だよ
73:61
14/06/29 02:50:01.03 V0nwOHaK.net
自己解決しました
これマニュアルに載ってない気が・・・
74:名前は開発中のものです。
14/06/29 09:31:00.80 sLVZnAPY.net
>>72
どう解決したのか、わたし気になります!
75:名前は開発中のものです。
14/06/29 10:50:05.17 ID49xzQdJ
助けてぇ。。。。ビルド出来るけど出来ないよぉ(困惑)
Unityエディタ上での実行は問題ないのに、WebPlayerやexe形式などでビルドしようとすると
error CS0103: The name `UnityEditor' does not exist in the current context
error CS1061: Type `object' does not contain a definition for `path' and no extension method `path' of type `object' could be found (are you missing a using directive or an assembly reference?)
とかで怒られる。MonoDeveloperで見る限りは
Assembly-CSharp
Assembly-CSharp-Editor
Assembly-CSharp-firstpass
のそれぞれのReferencesにUnityEditor.dllはちゃんと存在してる感じ。
詳細な経緯は以下のとおりです。
1) Unity4.3.4からUnity4.5.1へアップデート
2) そのまま平和な日々が過ぎていく
3) Windowsが起動失敗→復元ポイントまで戻すで復元
4) Unityのバージョンが4.3.4まで巻き戻る
5) 4.5.1へアップデート
6) 上記のビルド出来ない病が発病
7) 4.5.1アンインストール後、4.3.4インストール
8) 治らない;
9) 4.3.4アンインストール後、4.5.1インストール
10) 治らない;;
76:74
14/06/29 12:54:21.90 ID49xzQdJ
>>74 自己解決しました。
原因は経緯と全く関係なく、スクリプトのファイル形式でした。
どこで、そうなったかわかりませんが、
UTF-8(BOMなし)形式で保存されていたのを、
UTF-8(BOMあり)形式に変換して保存しなおしたら問題なくWebPlayerやexe形式へビルドできるようになりました。
お騒がせしました。
よかったよおおおお;;
77:名前は開発中のものです。
14/06/29 17:05:58.70 W6QLaLK8T
初心者です
URLリンク(japan.unity3d.com)
上記の公式チュートリアル通りに2Dシューティングにバーチャルジョイスティックを実装してみました。
androidで動作確認してみると、ジョイスティック入力と画面上での自機の移動に少しズレができてしまい操作性が悪く困っています。
良い方法はありますか?
低レベルな質問かもしれませんがお願いします。
78:名前は開発中のものです。
14/06/29 18:39:51.50 V0nwOHaK.net
アニメーションステートのInspectorにTransitionのリストがあって
遷移先はリストの上にあるものが優先される(Atomicを外したTransitionを再生中の時のみ)
リストはドラッグ&ドロップで入れ替えられる
メカニムでキャラの動き制御するなら結構重要だと思うんだけどマニュアルにも載ってないしググっても出ない
79:名前は開発中のものです。
14/06/29 18:42:12.58 4QjtsUPR.net
>>77
アセットストアで検索したらいいと思いますよ
80:名前は開発中のものです。
14/06/29 18:47:37.07 tXtNTezB.net
ここは「氷菓」のウンカス、チタンダエルを愛でるスレです。
★チタンダエル (CV:くぱぁマン子)
成り上がりチョン名家のひとつ、剛毛恥嘆惰毛の一匹。
普段は黒々としたウンコだが、一度興味をひかれる男に出会うと
その細く吊り上がった瞳を濁らせて劣情の権化と化す、性欲旺盛なビッチ。
決まり文句は「わたし、痔になります」。
81:名前は開発中のものです。
14/06/29 18:58:55.51 n5E22NIZY
意味がわからないよ〜
GameObject retChild = gameobject.transform.FindChild("子の名前").gameObject;
このプログラムや他のオブジェクトを取得する文を入力するのだけど、
どうやっても改善できないよ〜
エラー文は以下の通りです。
Assets/waveenemy.js(19,19): UCE0001: ';' expected. Insert a semicolon at the end.
82:名前は開発中のものです。
14/06/29 19:02:52.93 n5E22NIZY
すみません、80ですがやりたいことを記入してなかったので、追記します。
HPのバーをダメージを受けるたび減らしたいのですが、
バーを呼び出そうとするとエラーになりました。
キャラ本体とバーは別物なので、どうするといいでしょうか?
セミコロンはつけてるのに、エラーになります。
functionのすぐ下に書いても同じです。
83:名前は開発中のものです。
14/06/29 20:24:40.34 BwfVhPXR.net
シーン遷移時にフェードアウトさせてるんですが、
フェードアウト中に他のボタン、例えば前のシーンに戻るボタンや別ステージへ移動するボタンを無効にしたいです。
現在は一つ一つにpublicなboolをつけてシーン遷移時に全てfalseする方法をとっています。
もっと簡潔な方法あったらお願いします。
84:名前は開発中のものです。
14/06/29 20:59:25.18 4QjtsUPR.net
>>82
アセットを買うのが一番簡潔な方法ですよ
85:名前は開発中のものです。
14/06/29 22:19:39.43 9oDHnJ4j.net
>>82
NGUIなら不可視の全画面のWidget作ってコリダーを付けておき一番手前に置いておけば良いだけ
86:名前は開発中のものです。
14/06/29 22:55:19.03 BwfVhPXR.net
>>84
unityの2dでやってます。
コライダー付きのゲームオブジェクトをフェード前に配置する感じにしてみます。
ありがとう。
87:名前は開発中のものです。
14/06/29 23:27:23.66 9oDHnJ4j.net
>>85
基本はUIイベントに到達するまえにタップやクリックを食って捨てるだけなので、ButtonMaskとか言うオブジェクトをヒエラルキーのTopLevelに置いておいてそれをSetActiveでOn,Offするのが楽かもね
GameObject mask = GameObject.Find("/ButtonMask"); で持ってくる感じ
88:名前は開発中のものです。
14/06/29 23:38:39.13 BwfVhPXR.net
>>86
やり方まで書いてもらってどうもありがとうございます。
これでやってみます。
89:名前は開発中のものです。
14/06/30 01:08:56.97 1W4uEawq.net
NGUIのUIって普通にインスタンスで呼び出し→Destroyで消去
していいんですよね?
「スペースキー押すとUIをInstantiateで表示し、表示した状態で
もう一回スペースキーを押すとDestroyでUI消去する」という処理を作りました
結果は、表示は問題ないのですがスペースキーを押してもUIが消えない
事があります。
正確には、消えたり消えなかったりという感じです。
スペースキー連打してたら消えるのですが・・・。
そのUI表示時にスペースキー押してUIを消そうとした時、デバッグのエラーに
「Destroying GameObjects immediately is not permitted during physics trigger
/contact, animation event callbacks or OnValidate. You must use Destroy instead.」
というエラーメッセージが必ず出ます
何が悪いんでしょうか?(もしかしてNGUIのUIはDestroyしたらダメなんですか?)
90:名前は開発中のものです。
14/06/30 01:12:17.67 i9hyodfO.net
>>77
なるほど、ありがとん!
91:名前は開発中のものです。
14/06/30 01:35:52.30 mwLmwaX9.net
>>88
簡単に書くとNGUIのイベントの中で自分をDestroy してはいけませんって事
もしすぐにぶちこわしたいのなら
gameObject.SetActive(false);
で非表示にしてから
StartCoroutine("DeleyedDestroy");
みたいにコルーチンを呼び出して
IEnumerator DeleyedDestroy() {
yield return null;
Destroy(gameObject);
}
と1フレーム遅くに破壊しないと駄目
92:名前は開発中のものです。
14/06/30 01:45:56.31 A3spulFo.net
俺は親のPanelにSendMessageするなりメソッド直接呼ぶなりしてDestroyしてる
そういうエラーは出てないからこれでいいはず…いいよね?
93:名前は開発中のものです。
14/06/30 01:59:32.14 gCDT1VPE.net
>>78
それ質問じゃないですよアセットおじさん
94:名前は開発中のものです。
14/06/30 02:04:49.85 Q4WnWElN.net
>>92
Assetを購入すれば質問になりますよ
95:名前は開発中のものです。
14/06/30 02:17:23.83 1W4uEawq.net
>>90-86
ありがとうございます。
NGUIって、普通に文章を表示する、ボタンを付けるという
凝った使い方しない場合はNGUI -> Scripts内のスクリプトって
弄る必要ないですか?
インスペクタだけ弄ってれば一般的なUI機能は使えますか?
96:名前は開発中のものです。
14/06/30 02:28:54.98 mwLmwaX9.net
>>94
Assets/NGUI/Scripts/*/*.csの事?
余程特殊(継承したクラスで継承元のprotectでない変数見たいとか)な事しないかぎり普通変更しないよ
97:名前は開発中のものです。
14/06/30 02:30:18.33 1W4uEawq.net
>>95
はい、その事です
通常はやはりインスペクタで調整するのですね
ありがとうございました。
98:名前は開発中のものです。
14/06/30 02:51:01.55 1W4uEawq.net
すみません、>>90を実行してみたのですがやはり同じエラーが出て
すんなりとはUIが消えてくれません。
デバッグ見るとNGUITools.csの
static public void DestroyImmediate (UnityEngine.Object obj)
{
if (
99:obj != null) { ★if (Application.isEditor) UnityEngine.Object.DestroyImmediate(obj); else UnityEngine.Object.Destroy(obj); } } ★でエラーが出ていました。 これはNGUIどうのではなく、UIの呼び出し条件、もしくは消去条件のif文あたりが 問題あるのでしょうか?
100:名前は開発中のものです。
14/06/30 02:56:27.05 Q4WnWElN.net
>>97
Assetを購入することでエラーも出なくなりますよ
101:名前は開発中のものです。
14/06/30 04:27:24.95 PlJB/HNp.net
このレベルの人間がアプリ作る時代だもんな
Unityは罪深いソフトだよ
102:名前は開発中のものです。
14/06/30 05:17:10.38
現在2Dで開発しています、
壁に当たった際に、キャラを右移動から下移動に切り替えるようにプログラム
していますが、よく見ると下だけではなく跳ね返って左側にも少し移動しています。
これは仕様なのでしょうか?
跳ね返り係数は0にしているはずですが、壁に当たり摩擦したように
速度が落ちることがあるのでないようにしたいです。
ちなみに、移動のための文は以下の一文の向きを変えてます。
transform.Translate(Vector3.right * 3 * Time.deltaTime);
103:名前は開発中のものです。
14/06/30 06:06:06.66 xbMO5WXk.net
裾野が広がるのはいいことだけど
何でもかんでも質問する人には困るよな
ヒントもらったら自分で何とかしろ
104:名前は開発中のものです。
14/06/30 06:26:37.61 PlJB/HNp.net
教えて君はダメだな
105:名前は開発中のものです。
14/06/30 09:08:37.35 A3spulFo.net
とりあえずNGUIを入れ直した方がいいんじゃないか
106:名前は開発中のものです。
14/06/30 09:22:50.74 PtdaEyYt.net
敵をtransform.LookAtでこちらを向かせ
transform.forwardでこっちに向かって来るというようにしたいのですが、
床に沈んでしまいます。
colliderの調整、rigidbodyのconstraintsのfreeze positionのYにはチェックを入れています。
床に沈まないようにするためにはどのようにすればよろしいのでしょうか?
107:98
14/06/30 09:32:55.86 PtdaEyYt.net
>>104
自己解決いたしました。
ありがとうございます。
108:名前は開発中のものです。
14/06/30 12:04:32.92 tC9m33Xe.net
◎2chスレッド勢いランキングサイトリスト◎
★+ニュース板
・ 2NN (推薦)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推薦)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推薦)
・ READ2CH
・ i-ikioi
※ 要タイトル名検索
※ 2chブラウザ併用推奨
109:名前は開発中のものです。
14/06/30 14:20:06.55 ALw2LC0O.net
アセットを買おうとしたらガムロードに誘導されたんですが
ここはPayPalは使えないんでしょうか?
アセットストアから買ったほうがいい?常に最新ではないみたいだけど
110:名前は開発中のものです。
14/06/30 19:35:37.91 UQ1OJf+x.net
maかfbxからライトのデータを取り込むことってできますかね
ライティングはunity内で調整するしかない?
111:名前は開発中のものです。
14/06/30 19:40:15.99 MG2Qxsma.net
>>108
アセットを買えばできるとおもいますよ
112:名前は開発中のものです。
14/06/30 21:54:47.32 mwLmwaX9.net
>>97
遅延評価しても駄目って事?(遅延評価の意味わかんないとちょっと論外)
エラーが自分を起点にしている呼び出しの中でImmidiate(即時)のDestroyは駄目って言う事を理解している?
ゲーム用のUIコードをUnity以外で書いた事あればすぐに何が悪いかわかるんだけど、コレは説明が難しいかもしらん。
113:名前は開発中のものです。
14/06/30 22:42:41.46 1W4uEawq.net
>>110
すみません、ゲーム制作した事ないので初心者です・・・
完全に知識不足のようなので、とりあえずこの問題は後回しにしようと思います
ボタン連打すれば一応、閉じる事はできるのでゲーム進行不能になるわけではないですし
>エラーが自分を起点にしている呼び出しの中でImmidiate(即時)のDestroyは駄目って言う事を理解している?
半分は理解しているつもりです
「自分を起点」というところがちょっと理解できてないです
114:名前は開発中のものです。
14/06/30 23:03:48.33 PlJB/HNp.net
あきらめろん
115:名前は開発中のものです。
14/06/30 23:07:26.15 mwLmwaX9.net
>>111
ボタンスクリプトのイベント拾ってその中でDestroy呼んでるのが駄目って事(発生元と消失が一緒)
そうなってない?
116:名前は開発中のものです。
14/06/30 23:08:14.89 MG2Qxsma.net
>>111
アセットを買えばそんなの気にしなくてすむよ
117:名前は開発中のものです。
14/06/30 23:38:22.83 1W4uEawq.net
>>113
なるほど
でも発生元はオブジェクトAのInstantiateで消す時は
同じオブジェクトA内で>>90ですね
Instantiateしてからオ同じブジェクトAでDestroyしても
発生元と消失が同じとなるんでしょうか
118:85
14/07/01 03:55:59.52 nHreHfmg.net
>>115
そりゃ君の書いたコードに依存してるので僕からは何とも言えない。
どうしても添削して欲しいならどこかでコードを晒す以外に無いよ。
119:名前は開発中のものです。
14/07/01 11:11:04.26 85UR2RLR.net
javascriptで作業しています。
"open_switch"が"false"の場合
"motion_00"を再生します。
2秒したら再生としたいのですが、
下記のように書くとエラーが出てしまいます。
どのように書けばよいでしょうか。。。
宜しくお願いいたします。
var obj:GameObject;
var script:window_control;
function Start () {
if(!obj){
obj=GameObject.FindGameObjectWithTag("untagget");
}
script=obj.GetComponent("window_control");
}
function Update () {
if(script.open_switch==true){
animation.Play("motion_01");
}
else{
yield WaitForSeconds(2.0);
animation.Play("motion_00");
}
}
120:名前は開発中のものです。
14/07/01 11:12:58.80 85UR2RLR.net
111 です。
説明が足りませんでした。
2秒後ということで、
”yield WaitForSeconds(2.0);”と書くとエラーがでます。
こちらを書かないと、実行可能です。
宜しくお願いします。
121:名前は開発中のものです。
14/07/01 12:14:02.96 wmLFBxvR.net
天安門事件
122:名前は開発中のものです。
14/07/01 12:30:14.74 pEsB09th.net
そのyieldはどこに制御を返してるんだよ
123:名前は開発中のものです。
14/07/01 13:33:09.43 SbtrGu4q.net
>>116
// ==================
// コリジョン
// 機能:プレイヤーヒット時に会話UIメソッドをコールする
// ==================
void OnCollisionStay2D ( Collision2D col ){
// 衝突相手がプレイヤー
if(col.gameObject.tag == "Player")
{
if(GameObject.FindWithTag ("UI") == null &&
PlayerFlag == 1) //PlayerFlagは操作プレイヤー側のフラグ。プレイヤーがボタンを押した場合にON
{
// 会話UI表示メソッド
Kaiwa();
}
if(GameObject.FindWithTag ("UI") != null &&
PlayerFlag == 0) //UI表示時にプレイヤーが再度ボタンを押した場合にクリア
{
// 会話UI消去メソッド
KaiwaDel();
}
}
}
124:名前は開発中のものです。
14/07/01 13:51:18.75 SbtrGu4q.net
続きです
// =================================================
// 会話UI表示メソッド
// =================================================
void Kaiwa (){
// 会話ウィンドウ表示
Instantiate(Resources.Load("6.prefabs/UI_1"), windowPos, Quaternion.identity);
}
// =================================================
// 会話UI消去メソッド(開始)
// =================================================
void KaiwaDel (){
// UIを非アクティブ
GameObject.FindWithTag("UI").SetActive(false);
// 消去メソッド本体コール
StartCoroutine("DelMessage");
}
IEnumerator DelMessage (){
yield return null;
Destroy(GameObject.FindWithTag("UI"));
}
というコードをコリジョンされる側に書いています(される側毎に別メッセージを表示するため)
何かおかしな箇所などありますでしょうか
125:名前は開発中のものです。
14/07/01 18:34:44.20 6DDxUZVh.net
つか・・・もうそろそみんなGitHub使おうよ
126:名前は開発中のものです。
14/07/01 19:36:17.39 85UR2RLR.net
>>120
"yield"は、このスクリプトが
当てはめられている、ゲームオブジェクトに流れている
127:モーション ”if”部分の”motion_00” を2秒待って、次のモーションを流したいと考えています まだ勉強初めたばかりで、上手く伝えられず申し訳ないです。 また"yield"を使わないでも、制御できるなら、 その手法も教えていただけるとありがたいです。
128:名前は開発中のものです。
14/07/01 19:37:02.27 nHreHfmg.net
>>122
そのコードだけ見てる分には原因がつかめないね。
エラーが起きたときのスタックトレース(コンソールでエラーをクリックして表示される詳細)も付けてくれると少しは見えてくるかもしれない。
129:名前は開発中のものです。
14/07/01 19:37:45.45 nHreHfmg.net
>>124
void Updateの中でyieldしちゃだめじゃないのかな
130:名前は開発中のものです。
14/07/01 19:53:51.32 SbtrGu4q.net
>>125
レスありがとうございます。こちらになります。
URLリンク(i.imgur.com)
もしかしてコードの問題ではなく、NGUIで構成したUIオブジェクトの作り方に
問題があるんでしょうか
正直、一つのサイトだけでは意味不明だったので色んなサイトを参考にして
つぎはぎのような感じで作ったので・・・
UI_1:子を含めた全ての管理(詳細は理解できていません)
Camera:UIのみを映すカメラ(画面に対する位置はこれで決める?)
Sprite:UIの背景画像オブジェクト(画面に対するUI本体の大きさとかはここで決める?)
Label:UIに表示する文字であるフォントオブジェクト(フォントの種類や大きさはここで決める)
という認識で作りました。
131:名前は開発中のものです。
14/07/01 19:59:02.35 ld0xYEoC.net
>>126
多分これ
例えばhanteiって関数を作って、update内を移植
でupdate内でhanteiを実行する
132:名前は開発中のものです。
14/07/01 22:52:30.64 OEeCJUKWv
>>128
アドバイスありがとうございます。
ちなみに、2秒後に("motion_00")を再生させるには、
具体的にはどのように関数を入れればよいでしょうか。。。
宜しくお願いします。
var obj:GameObject;
var script:window_control;
function Start () {
if(!obj){
obj=GameObject.FindGameObjectWithTag("untagget");
}
script=obj.GetComponent("window_control");
}
function Update () {
if(script.open_switch==true){
animation.Play("motion_01");
}
else{
yield WaitForSeconds(2.0);
animation.Play("motion_00");
}
}
133:名前は開発中のものです。
14/07/01 22:38:10.43 85UR2RLR.net
>>128
アドバイスありがとうございます。
ちなみに、2秒後に("motion_00")を再生させるには、
具体的にはどのように関数を入れればよいでしょうか。。。
宜しくお願いします。
var obj:GameObject;
var script:window_control;
function Start () {
if(!obj){
obj=GameObject.FindGameObjectWithTag("untagget");
}
script=obj.GetComponent("window_control");
}
function Update () {
if(script.open_switch==true){
animation.Play("motion_01");
}
else{
yield WaitForSeconds(2.0);
animation.Play("motion_00");
}
}
134:名前は開発中のものです。
14/07/02 00:36:45.57 hSzZV3yyk
unityでFPSを作っているものです。
ネットで見つけたサンプルのスクリプトを改良して、
以下のような弾を発射するスクリプトを書いたのですが、
インスタンス化をする場所の、座標の指定をどのようにして行うのかわかりません。
どなたかご教授していただけませんか?
#pragma strict
var bulletPrefab:GameObject;
var kankaku:float;
var shotSE : AudioClip;
var startTime:float;
var owaruTime:float;
var zikan:float;
var initialVelocity:float;
function start () {
owaruTime = Time.time;}
function Update () {
startTime = Time.time;
zikan = startTime - owaruTime;
if(zikan>kankaku)
if(Input.GetButton("Fire1")){
audio.PlayOneShot(shotSE);
var bullet:GameObject=Instantiate(bulletPrefab,transform.position,transform.rotation);
var direction:Vector3=transform.forward;
bullet.rigidbody.velocity=direction*initialVelocity;
owaruTime = Time.time;}
}
135:名前は開発中のものです。
14/07/02 00:39:34.86 QoBd/2mX.net
>>130
具体的に言うとアセットを買えばいいと思うよ
136:名前は開発中のものです。
14/07/02 00:47:38.76 pKyuPS5V.net
どうやったら2秒後に特定の処理を走らせるか なんて
誰が書いても大して変わらないし初心者には良い練習問題だと思うけどな
137:名前は開発中のものです。
14/07/02 01:17:15.93 N3YXxu3x.net
>>130
この辺とかは参考になると思う
URLリンク(gamesonytablet.blogspot.jp)
とりあえずコピペすれば動くコードよこせとかやってちゃ
進歩はない。
138:名前は開発中のものです。
14/07/02 01:37:55.46 wjodTEe/.net
>>130
function Update () {
if(script.open_switch==true)
{
animation.Play("motion_01");
}
else
{
yield StartCoroutine("Wait");
}
}
function Wait () {
yield WaitForSeconds(2.0);
animation.Play("motion_00");
}
これでいけるのでは?
私も上で質問しまくってる初心者ですしCSで書いてるので
保証できませんが今コンパイルしたらエラーは出ませんでした。
yield StartCoroutine("Wait");はWait();でもいいのかもしれません
JSはStartCoroutineでコールしなくてもいいような記述がありましたので
139:名前は開発中のものです。
14/07/02 01:45:44.05 +FRMTuKVe
>>134
実はそちらのページも見ていて、
"Invoke"を利用して書いてみたのですが、
動きませんでした。
下記の形だと"else"の場合も2秒後になってしまいます。。。
var obj:GameObject;
var script:window_control;
function Start () {
if(!obj){
obj=GameObject.FindGameObjectWithTag("untagget");
}
script=obj.GetComponent("window_control");
//2秒後にモーションを再生
Invoke("Motiontimer", 2);
}
function Motiontimer () {
if(script.open_switch==true){
animation.Play("motion_01");
// }
}
else{
animation.Play("motion_00");
}
}
140:名前は開発中のものです。
14/07/02 01:39:58.83 N3YXxu3x.net
それでも多分動くけど延々コルーチン呼び出すよねw
141:名前は開発中のものです。
14/07/02 01:44:47.69 wjodTEe/.net
script.open_switchをtrueにしなければそうなりますが
恐らく判定を省略しているのでは?
私も全部は行数オーバーで1回でレスできないので略す事が多いので・・・
142:名前は開発中のものです。
14/07/02 02:03:19.53 N3YXxu3x.net
でもscript.open_switchをtrueに戻しちゃうと即
animation.Play("motion01");
が効いてmotion00は1フレームだけしか再生されなからな〜。
まぁきっと色々省略してるんだよなw
143:名前は開発中のものです。
14/07/02 02:25:46.30 +FRMTuKVe
>>136
アドバイスありがとうございます。
下記のような形で書いてみましたが、
"motion01"が再生されないですね。。。
自分でも調べてみます。
また、"motion00"はもともと静止モーションなので
1F再生でも大丈夫です。
var obj:GameObject;
var script:window_control;
function Start () {
if(!obj){
obj=GameObject.FindGameObjectWithTag("untagget");
}
script=obj.GetComponent("window_control");
}
function Update () {
if(script.open_switch==true){
animation.Play("motion_01");
}
else{
yield StartCoroutine("Wait");
}
}
function Wait () {
yield WaitForSeconds(2.0);
animation.Play("motion_00");
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
1379日前に更新/345 KB
担当:undef