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");
}
144:名前は開発中のものです。
14/07/02 02:33:39.23 +FRMTuKVe
>>135
140です。
実行自体は出来ますが、
"Script error (panel_control): Update() can not be a coroutine."
コールーチン出来ないと出てしまいます。
145:名前は開発中のものです。
14/07/02 04:51:39.34 uZr6i5PP.net
C#とjsどっちで書いたらいいんよ
差はあるんか?
146:名前は開発中のものです。
14/07/02 05:08:09.00 QoBd/2mX.net
>>142
アセットを購入すると差がなくなったりすると思います
147:名前は開発中のものです。
14/07/02 05:09:48.86 VPrZ3A9M.net
まあC#だろうな
148:名前は開発中のものです。
14/07/02 05:55:10.24 +FRMTuKVe
140です。
コルーチンというものを、
一通り読ましていただき、
下記のように記入し無事解決しました。
アドバイスを色々いただき、ありがとうございます!
function Update () {
if(script.open_switch==true){
StartCoroutine("Wait");
}
else {
animation.Play("motion_00");
}
}
function Wait(){
yield WaitForSeconds(2.0);
animation.Play("motion_01");
}
149:名前は開発中のものです。
14/07/02 07:24:57.54 Q9Mkocfr.net
処理速度の差はないという話は何度か出た
あとこのての話は、回答者の自分が好きな言語を勧めてくる展開になるので決着はない。
Booこそ至高。
150:名前は開発中のものです。
14/07/02 08:06:04.92 EWc2yUWa.net
黄色い本にはUnityはJスクが一番効率が良くなるように作られてるとか書いてあったな
俺は単に読み慣れてるからC#
151:名前は開発中のものです。
14/07/02 13:08:50.30 uZr6i5PP.net
C#で攻めるぜありがとう
152:名前は開発中のものです。
14/07/02 16:06:45.90 hSzZV3yyk
すいません・・・
>>131です。
書き忘れていましたが言語はjavascriptです。
おそらく↓の行を変えればいいのだろうというのは分かるのですが、
どのサイトを見ても具体的に解説してくれている場所がありませんでした。
var bullet:GameObject=Instantiate(bulletPrefab,transform.position,transform.rotation);
153:名前は開発中のものです。
14/07/02 18:21:25.12 lJtkd36h.net
javaスクリプトじゃ結局やりきれないしな
c#がいいよ
154:名前は開発中のものです。
14/07/02 19:49:19.17 ASPst2OS.net
C#はいちいちクラス書かないとだめだから糞
嘘 jsのほうが簡単だと思ってjsから始めただけです
155:名前は開発中のものです。
14/07/02 20:16:41.09 zCy25au/.net
javascriptで出来ないことってあるのか?
もし無いならjsで始めちゃったしそのまま行きたいんだが・・・・
156:名前は開発中のものです。
14/07/02 20:35:37.36 QlXU2+TL.net
俺もパッと見シンプルなJSで始めちゃって今更移ろうとしても違和感が
GetComponent<type>()の<>てなんだよ・・・いやわかるけど、JSに慣れてると納得いかんことが多くて困る
C#のが機能が多いらしいけどインターフェースの継承とか自分は使わんしなあ
ほんと、どっちがいいかは人によると思う
157:名前は開発中のものです。
14/07/02 20:40:01.71 zLf1ED1q.net
無能の言い訳じゃねぇかw
158:名前は開発中のものです。
14/07/02 20:45:09.76 JKcw5LB+.net
>>152
できない事はない
MonoBehaviourからのデフォルト継承以外にも一応独自クラスから継承もできる(class宣言いるけど)
ただC#のコードと混ざるような事をするときにコンパイル順序の問題で困る事がある(C#のクラスにJavascriptのクラスを保持したり継承したりするとき)
159:名前は開発中のものです。
14/07/02 20:50:41.98 zojBDLQs.net
javascriptでもある程度慣れればC#は推測で読めるようになってくると思います。
確かにGetcomponentの<>に最初首を傾げてしまいましたが
それと、GameObject(3dモデル)を複数のスクリプトのStart内から、参照させたらその内の一つが存在しないcloneを参照しちゃったのですが、その原因が未だに分かりません……
tagで参照したのですが、参照させる数に制限はあるのでしょうか?
取り敢えず今は救済処置で、ゲームコントローラーで、モデルを生成して、そいつの名前を参照させたら旨く行きました。
160:名前は開発中のものです。
14/07/02 20:53:52.24 QlXU2+TL.net
あれ、調べたらUnityのjsならinterface使えるらしい javaと同じimplementsで継承
161:名前は開発中のものです。
14/07/02 21:49:19.58 lJtkd36h.net
>>155
どんどん、本来のjava scriptから外れていくから、
それなら最初からc#使った方がいいよ。
c#もなれれば面倒じゃないし難しい事は何も無いから、jsに逃げない方がいい
162:名前は開発中のものです。
14/07/02 22:03:14.15 JKcw5LB+.net
>>158
俺に言われても
163:名前は開発中のものです。
14/07/02 22:05:08.83 lJtkd36h.net
>>159
できない事はないって言ったのおまえじゃん
無責任に最初だけ優しい言語覚えてもしょーがないから、c#覚えた方がいい。
そもそもc#は面倒でも難しくもないし、だったらいんちきjs使わずにc#使ったほうがいい
164:名前は開発中のものです。
14/07/02 22:10:36.25 JKcw5LB+.net
>>160
jsに逃げるとか俺に言われてもこまるじゃんよー
実際できないこたぁねぇんだし。
自前でC#のクラス書くようになったり、C#コード持ち込むならコンパイル順序で困る事になるとはちゃんと書いたぢゃんよ。
165:名前は開発中のものです。
14/07/02 22:43:07.29 uZr6i5PP.net
プログラミング本のおすすめ
C#の絵本の方がやさしくてソッチのほうがいいと思う
166:名前は開発中のものです。
14/07/02 22:43:56.08 eDSrZ3VE.net
URLリンク(store-jp.unity3d.com)
このページのiOS ProやAndroid Proって何なんですか?
これがないとモバイル向けのビルドができない…わけじゃないですよね?
167:名前は開発中のものです。
14/07/02 22:47:05.39 N3YXxu3x.net
Proの機能を使わなければできる。
168:名前は開発中のものです。
14/07/02 22:57:16.71 zCy25au/.net
なるほど。
後々のことも考えてC#やるかな・・・・
URLリンク(www.amazon.co.jp)
今これ見つけたんだけど、もっとお勧めの本ってある?
169:名前は開発中のものです。
14/07/02 22:59:22.34 eDSrZ3VE.net
最適化とか書いてあるので初心者には関係なさそうですね
ありがとうございました
170:名前は開発中のものです。
14/07/02 23:05:23.81 JKcw5LB+.net
>>165
C#覚えたいならUnityでの製作とは遠回りになるけどMicroSoftのVisualStudio使った開発の本読むのおすすめ。
プログラムができてC#固有の部分だけを知りたいのならMSの言語仕様書関係の黄表紙の高い本一通り通読しておくと良い。
プログラミング自体が初心者ならまず解る言語から手を付けるのが良いけど、UnityはC#,JS(クラスベースでWebのプロトタイプベースでは無い),Python(BOO)しかないからなぁ
なんだかんだでUnityの事を知る前にプログラミングの素養が必要なのでちょっと遠回りするのをおすすめするしか。
171:名前は開発中のものです。
14/07/02 23:08:16.43 uZr6i5PP.net
結局何を使おうがプログラミング能力が必要なんですよ
172:名前は開発中のものです。
14/07/02 23:18:18.40 Q9Mkocfr.net
まとめるとJSで困る事って何?
173:名前は開発中のものです。
14/07/02 23:19:13.85 VPrZ3A9M.net
プロパティとかコルーチンとかいろいろとたいへんな言語だからなあ
174:名前は開発中のものです。
14/07/03 00:49:54.68 ZCqb1W0E.net
>>166
最適化こそ、初心者向きだと思うわけです。
適当にコード書いても、最適化でそこそこ処理が速くなるんだから。
175:名前は開発中のものです。
14/07/03 00:53:41.02 ZCqb1W0E.net
>>169
> まとめるとJSで困る事って何?
Unityの変態JSをマスターして、「ぼくJSできます!」っていうと恥をかくかもしれない。
というか、独自言語すぎて、その知識が使い回せないのが欠点かと。
せっかく覚えた知識を他で生かせないのは悲しいぞ。
176:名前は開発中のものです。
14/07/03 01:20:36.92 barvXINQ.net
ぼく jsとできてます*^-^*
177:名前は開発中のものです。
14/07/03 01:24:11.36 NvXSP48Q.net
アセットを買ったら言語に悩みませんよ
178:名前は開発中のものです。
14/07/03 01:41:35.35 4afSdlgg.net
C#だと.net系のコード資産やライブラリを流用出来るのも利点かな
NPOIとEditor拡張でExcel読み込みとか捗った。C#の資産って結構なんでもありな感じに物が揃ってて素敵
UnityScriptでもコンパイル順序とか気を付ければ使えるようだけど、結局ライブラリのソースコード読むことになると手間
巣のJavaScriptの資産を使うには手直しが多いし、ブラウザ言語として伸びたものだけにUnity上で旨味を感じられるものもないし
179:名前は開発中のものです。
14/07/03 01:59:00.18 hF02YIgz.net
3Dマリオ風ゲーム作りたいだけの俺には分かり易いjsで十分
クラスすら不要
180:名前は開発中のものです。
14/07/03 01:59:47.86 BXVgkkU+.net
なんかC#信者がウッザイんですケドー
181:名前は開発中のものです。
14/07/03 02:11:14.41 Qm05RdKY.net
unityに限ればmonoでc#言語が基本になってるから、c#がいいかもしれないね
182:名前は開発中のものです。
14/07/03 06:26:02.13 Y+BAfGHD.net
というよりずっと初心者のままでいるつもりなのは流石に笑えるw
何年経ってもうだつが上がらない人って、最初から言い訳ばっかりだよな
183:名前は開発中のものです。
14/07/03 08:10:17.15 JsOF4d9mI
Collision DetectionをContinuousにしていてもオブジェクトに衝突せずに貫通することがあるのは何故でしょうか。
184:名前は開発中のものです。
14/07/03 07:31:08.63 hF02YIgz.net
使う言語でゲームの質も決まったらいいのにな
185:名前は開発中のものです。
14/07/03 07:34:33.20 wlt3xY7j.net
ここまで見るとC#だと他からのコードコピペで動くから便利! と言う事でOKでしょうか?
186:名前は開発中のものです。
14/07/03 08:13:16.04 bmzuMbOZ.net
URLリンク(blogs.msdn.com)
187:2014/07/02/microsoft-acquires-syntaxtree-creator-of-unityvs-plugin-for-visual-studio.aspx UnityVSの開発元をマイクロソフトが買収 無料になるかもしれん VSがPRO以上必要だけどね
188:名前は開発中のものです。
14/07/03 12:45:44.36 uH9OJX93.net
>>167
なるほど、まぁそれもそうか。
ありがとう。その本使って一から頑張るわ
189:名前は開発中のものです。
14/07/03 13:52:04.89 ymCV/AeW.net
C# も JavaScript も両方読み書きできるおれには関係ないな(キリッ
190:名前は開発中のものです。
14/07/03 14:03:29.65 hZA6WLl6.net
すみません、質問なのですが
透明要素のないシェーダーを使ったマテリアルを透明にするには
シェーダーの中に透明にする要素を追加するしかないのでしょうか?
コンポーネントにそのような機能も見当たらないので困っています…
191:名前は開発中のものです。
14/07/03 14:04:16.46 wUj4bRGx.net
UnityScriptはJavaScriptを知ってる人には、出来るはずのことが出来なくて辛い
192:名前は開発中のものです。
14/07/03 14:37:46.46 PM9QpSUP.net
>透明要素のないシェーダーを使ったマテリアルを透明にするには
>シェーダーの中に透明にする要素を追加するしかないのでしょうか?
基本的にはシェーダーをいじるのが一番いい。
Pro版ならばカメラで映した内容をレンダーテクスチャに描画して、
レンダーテクスチャを透過可能なシェーダーを指定したマテリアルに設定して、
GUIテクスチャなり平明ポリゴンなりに貼って透過するという手もあるけれど、
コスパ最悪だしProじゃなきゃだめだしおすすめしない。
多分他に方法があってもシェーダー書き換えるのが一番お得。
シェーダーの記法まで覚えると面倒だから、
Unityプリセットシェーダーが配布されてるとこ見つけて、
透過できるシェーダの中身見て、それっぽいとこコピペすれば良いよ多分
193:名前は開発中のものです。
14/07/03 14:42:22.09 PM9QpSUP.net
あと俺も教えて欲しいんだけど、
モバイル開発してる人でスマホとタブレット用に別々のテクスチャ用意してる人は
それぞれどのくらいのサイズ用意してる…?
アンドロイド、アイフォン両方でリリースする予定なんだけど、
今は 640x960 と 1536x2048 の2つの解像度を想定したテクスチャ作ってる。(iPhne4SとiPad3の解像度)
どっちも比率は3:4で、アスペクト比が違う端末には黒枠で対応してる。
「テクスチャの組み合わせはこれがいいよ!」みたいなのあったら教えてくれるとめっちゃ嬉しい。
194:名前は開発中のものです。
14/07/03 15:27:33.83 SgATjdgc.net
>>188
>Unityプリセットシェーダーが配布されてるとこ見つけて、
これ公式のダウンロードにあるねん
URLリンク(unity3d.com)
ここのBuilt in shaders
195:名前は開発中のものです。
14/07/03 16:23:04.23 hZA6WLl6.net
>>188,>>190
すみません、ありがとうございます。
シェーダーの文法もある程度理解できたのでプリセットを基に
コピペして改良を加えてみようと思います。助かりました。
196:名前は開発中のものです。
14/07/03 17:47:31.45 esbtuXa7.net
>>189
アセット買うといいよ!
197:名前は開発中のものです。
14/07/03 17:57:20.33 PM9QpSUP.net
>>192
検索してみたー
xARM: Aspect and Resolution Master
ってやつかな?
実機での見た目とか表示結果をエディタで確認できるアセットなのかな…?
198:名前は開発中のものです。
14/07/03 20:28:33.27 r97mwI49.net
購入済みアセットがバージョンアップした場合、
バージョンアップ後のアセットのダウンロードには料金支払いが発生するの?しないの?
199:名前は開発中のものです。
14/07/03 20:40:47.13 Xo7xFufk.net
アセットのバージョンアップ料の請求があった話は
俺は聴いたことがないなぁ。
まぁでも一回払ったら無限サポート
200:とかやってられんから これからどうなるかは知らんけど
201:名前は開発中のものです。
14/07/03 20:56:30.34 b88FU6vQ.net
それより買ったアセットは同じバージョンなら何回でもインストールできるんですか?
例えば、PC買い替えて新しいPCでもUnity入れたあと一度買ったアセットってインストールできますか?
202:名前は開発中のものです。
14/07/03 21:01:36.25 esbtuXa7.net
>>196
アセットを買ったらできると思うよ
203:名前は開発中のものです。
14/07/03 21:22:11.26 WyT8/+mx.net
今3Dを覚えてるんだけど3Dで覚えたことを2Dで応用することって可能?
2Dもアニメーションとかあるんですか?
204:名前は開発中のものです。
14/07/03 21:28:07.02 BXVgkkU+.net
お前には無理
205:名前は開発中のものです。
14/07/03 21:35:11.43 esbtuXa7.net
>>198
アセットを買えばいいんじゃないかな
206:名前は開発中のものです。
14/07/03 21:36:35.94 SgATjdgc.net
>>196
アカウントに結びついているので同じアカウントでアクティベートしてれば大丈夫
30日限定機能を使おうとして別アカ作りまくると買ったアセットは淋しいことになる。
207:名前は開発中のものです。
14/07/03 21:49:37.72 CKS7dI6H.net
>>198
2Dのアニメーション機能は1枚1枚絵を描いて作るパラパラマンガ的なやつだよ
208:名前は開発中のものです。
14/07/03 22:10:46.97 PM9QpSUP.net
>>200 君はさっきからずっとアセットを買わせることしか考えてないのかw
なんだ君はアセットストアの回し者かw
いや大抵のことはアセット買えばどうにかなるってのもわかるけどね
209:名前は開発中のものです。
14/07/03 22:16:36.99 PM9QpSUP.net
あと>>189の件ほぼ自己解決したけど
異なる画面比率を黒枠で対応してるから、画面比率の違いは考えなくてもよかったんや。
画面比率2:3なら、
320x480 640x960 960x1440 1280x1920 辺りから好きなのをいくつか選んで用意しておいて、端末の解像度によって切り替えるだけでええんや。
210:名前は開発中のものです。
14/07/03 22:32:56.13 FdjThcxv.net
>>203
お客さん、踊り子に触れたらダメよ
もう3年ぐらい回り続けてる人だから
211:名前は開発中のものです。
14/07/04 00:06:34.41 c2MTBNH7.net
>>205
そんなに長く居座ってたっけ?
treeboaの別アプローチなら納得するかもしらんが、アセットちゃんはここ半年くらいに沸いたんじゃ?
(そういえばその半年前はもっと酷いのが居たなwww)
212:名前は開発中のものです。
14/07/04 00:52:10.48 VBk62LKo.net
>>198
チュートリアルみたら分かるけど、3dには無い要素も結構含まれてるからなぁ
唐突に2dを作れるようにはならないね
213:名前は開発中のものです。
14/07/04 01:01:00.52 q9drZTxa.net
>>202
パーツをバラバラにして動かす奴のほうがメインじゃね?公式チュートリアルがそのタイプだし
214:名前は開発中のものです。
14/07/04 01:56:45.63 MtaEHS9A.net
cubeオブジェクトを長方形にしてlocalscaleのX軸を1F単位で
増減させる事で格ゲーのライフバーのような、内部数値によって
伸縮するゲージを作ったんですが、起点が中心にあるせいで
伸縮させると片側が伸び縮みするのではなく、左右両側から
中心に向かって伸縮していまいます。
これを解決する方法はありますか?(起点をオブジェクト左端に置くとか)
215:名前は開発中のものです。
14/07/04 02:16:17.53 wR5yBZ5m.net
>>209
座標の中心がどちらかの端面にある立方体モデルを作るといい
216:名前は開発中のものです。
14/07/04 02:35:35.75 MtaEHS9A.net
>>210
それをしたいのですが、それってHierarchy→Create→Cubeなどではなく
完全自作っていう事ですよね?
217:名前は開発中のものです。
14/07/04 02:43:37.29 wR5yBZ5m.net
>>211
うむ、Unityの標準プリミティブって融通が効かないから(球とかポリゴン数やばい)
なんらかのモデリングソフトでそれぐらいは作れるようになっとくといいかと
スクリプトでモデルを出力する手もあるけど
218:名前は開発中のものです。
14/07/04 03:47:34.42 MtaEHS9A.net
>>212
なるほど・・・
ありがとうございました
219:名前は開発中のものです。
14/07/04 07:22:33.68 hc2kb0Fa.net
NGUIのUILabelで縦書きをしたいのですが
何か方法はありますか?
調べても出てこなくて。
220:名前は開発中のものです。
14/07/04 07:29:08.51 WsivLMs6.net
>>214
アセットを購入するという方法がありますよ。
221:名前は開発中のものです。
14/07/04 07:51:51.54 cjLco/W6.net
lookatがiPhone実機だと適用されないのですが
pro版のみの仕様だったりしますか?
4.5.1を使っています
222:名前は開発中のものです。
14/07/04 08:05:46.38 hc2kb0Fa.net
>>214
ありがとうございます!
縦書きする為に有名なアセットがあれば
お勧めしてください。
223:名前は開発中のものです。
14/07/04 12:14:25.34 NPAj8i2R.net
>>217
アセットストアで検索したらいいと思うよ
224:名前は開発中のものです。
14/07/04 12:20:27.58 58i9wtLO.net
>>217
アセットでは解決しないよ
225:名前は開発中のものです。
14/07/04 12:43:12.82 X8NyIDls.net
>>213ちょっとしたモデリングができた方が良いのは確かだけれど、
1.空のゲームオブジェクトを作る
2.↑の子としてキューブを作る
4.キューブのローカルX座標をキューブのスケールXの半分にする(大きさが1,1,1なら、座標を0.5,0,0にする)
5.ゲームオブジェクトのスケールXをいじる
っていう方法でもできるよ 回転や拡大の中心点変えたい時は空のゲームオブジェクトを親にするのが楽ちん
>>205そうだねごめん。今度はちゃんと客席から眺めるだけにするよ
226:名前は開発中のものです。
14/07/04 12:45:49.24 WsivLMs6.net
>>219
アセットを「購入」しなければ解決はしませんよ?
227:名前は開発中のものです。
14/07/04 12:51:21.07 X8NyIDls.net
>>216
ルックアットはモバイル端末でもフリー版でも使えるはず。
予想できるのは…
ルックアットを呼ぶ前の処理でエラーが起きてて向きを変える処理まで辿り着いていないとか…
(実機でエラーが起きてもアプリは停止しない)
それならApplication.RegisterLogCallbackとか使って例外を画面に表示すると捗るよ。
タッチの判定をInput.GetMouseButtonとかInput.mousePositionみたいなマウス系の命令でやってるとか…
(マウス系の命令でモバイル端末のタッチは取得できない)
それならInput.touchCountとかInput.GetTouchのタッチ系の命令を使うと良い。
ただタッチ系の命令はエディタで反応しないから、エディタ用のマウス命令と実機用のタッチ命令両方書いとく必要があるよ 知ってたらごめんね
228:名前は開発中のものです。
14/07/04 12:55:51.90 WsivLMs6.net
>>222
アセットを買うことで謝らなくて済むようになりますが
どうでしょう?
229:名前は開発中のものです。
14/07/04 13:38:39.76 MtaEHS9A.net
>>220
出来ました!
これで単純なゲージ類はすぐ作れそうです
ありがとうございました
230:名前は開発中のものです。
14/07/04 18:58:10.31 9Bc+cY7U.net
ラグドールを設定してみて、パーツの対応関係を間違えたのでやり直したいんですが
どうやって再設定すればいいんでしょうか
各パーツのキャラクタージョイントを一つずつ選択していって削除するしかないですか?
231:名前は開発中のものです。
14/07/04 19:35:39.47 NPAj8i2R.net
>>225
アセットを買えばいいと思いますけど
232:名前は開発中のものです。
14/07/04 20:11:20.22 58i9wtLO.net
アセットでは解決しないよ
233:名前は開発中のものです。
14/07/04 21:33:21.35 wR5yBZ5m.net
>>220
それは盲点だったわ・・・スクリプトや外部ツール使わなくても工夫次第で意外となんでもできるもんなんだな
234:名前は開発中のものです。
14/07/04 21:38:35.28 WsivLMs6.net
>>228
アセットを購入すればもう少し賢くなれるでしょうね
235:名前は開発中のものです。
14/07/04 22:51:43.24 8iwJAlvh.net
>>222
アセットを買え、って言う人は、スレに粘着している基地害なので、気にしちゃいけない
236:名前は開発中のものです。
14/07/05 00:35:34.45 fwhKGKE3.net
>>230
アセットを買うのは間違いなんですか?
237:名前は開発中のものです。
14/07/05 00:36:14.68 ZH3A8ic4.net
アセットはアシェットというほうがかっこいい!!
238:名前は開発中のものです。
14/07/05 07:00:17.73 adPva+FU.net
>>222
処理をすっきりさせたらLookatが効きました。
ありがとうございます
239:名前は開発中のものです。
14/07/05 08:30:15.26 Tl1GrWSu.net
アセットでは不可能だ
240:名前は開発中のものです。
14/07/05 09:28:48.81 P/6a1HI3S
Unityで実装されたブラウザアプリの実行時速度を外部からコントロールできるような
手法やツールはあるのでしょうか。
241:名前は開発中のものです。
14/07/05 11:31:47.10 4hned8nP.net
xx
242:名前は開発中のものです。
14/07/05 14:40:33.98 uavTcDyB.net
public int hp { get; set; }
これを
public int hp {
get {
return this.hp;
}
set {
this.hp = value;
}
}
って書き換えると下記のエラーがでる。なんでさ。。。
StackOverflowException: The requested operation caused a stack overflow.
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
PlayerInfo.set_hp (Int32 value) (at Assets/Scripts/Player/PlayerInfo.cs:13)
243:名前は開発中のものです。
14/07/05 15:10:24.46 yKo8Fb0P.net
>>237
getter, setterの名前とインスタンス変数に付けた名前が一緒だから
this.hpを左辺値で解釈するとsetterが、右辺値でthis.hpとしてもgetterが呼ばれる。
222のsetterとgetterは永遠に自分を呼び出す
244:222
14/07/05 15:20:48.23 uavTcDyB.net
>>238
あ~、なるほどー。
理解しました!ありがとうございました。
245:名前は開発中のものです。
14/07/05 18:51:37.42 DdQVwyxA.net
そういやダークおじさんってこのスレだったけ?
グラボのスレ見てたら出没してて戦慄を覚えたw
246:名前は開発中のものです。
14/07/05 19:01:05.79 yKo8Fb0P.net
>>240
またそういう「いあ、いあ、くとぅるふ」みたいなこと言うと来るかもしれないぢゃないか!!
247:名前は開発中のものです。
14/07/05 19:53:00.68 LqlDa1fK.net
>>241
Assetを購入することで
来るのを阻止できると思いますよ。
248:名前は開発中のものです。
14/07/05 19:58:22.49 oSqj5Eii.net
一匹いるだけで十分うざいのに昔もう一匹いたの?それとも同一人物?
249:名前は開発中のものです。
14/07/05 20:30:09.68 fwhKGKE3.net
>>243が一匹目
250:名前は開発中のものです。
14/07/05 20:48:21.60 SilqY6PO.net
すみません、一昨日透明な方法について質問した>>186です。
今起きた現象の意味が分からなかったのでまた質問させて頂きます。
スタンダードパッケージのFX water(Pro Only)シェーダー(頂点/フラグシェーダー)の最初のサブシェーダーの中に
Blend SrcAlpha OneMinusSrcAlpha
と透明になってもらうためにブレンディングを付け足して透明度を自由に変えることができるようになったのですが
その水の中(カメラから見て水より向こう側)に置いたオブジェクトがまったく見えません…
シェーダーのいらない部分を確かめながら消していき
カリングやデプス、ブレンディングをいくつか追加したり消したり
と試行錯誤してみたのですが結局うまくいきませんでした。
しかしその後アルファ値を少しいじって
適当にオブジェクトを水に出し入れしたら
さきほどやりたいことどおりに水の中で映ってくれました…
驚いてその時のコードをもう一度見返しましたが結局自分が最初に付け足した
Blend SrcAlpha OneMinusSrcAlpha とオールドカードの部分を消していた
ぐらいしかやってることはありませんでした。
一応チャンスと思い保存しといたのですが、Unityを再起動すると
元の向こう側のオブジェが見えない状態になっていました。
ブレンディングを変えればいいのか
カリングやデプスなどが必要なのか
一時的にGPUの質が落ちてIF文で別の方向に行ったのか
それともUnity Pro限定とかのせいなのか
一体なにが原因だったのか意味が分かりません。
どなたか原因はわからなくてもいいので水の向こう側をちゃんと映す方法を教えてもらえないでしょうか…?
無知な長文本当に申し訳ない。
251:名前は開発中のものです。
14/07/05 21:07:22.01 BMnfLCcxE
質問です。Unity初心者です。
NGUIでiOS/Android向けのアプリを作ろうと勉強中です。
複数のスプライトを利用してパラパラ漫画のようなアニメーションを作りたいのですが、
やり方として下のように大きく2つに分かれるかなと思ってます。
1. 標準のAnimation(Animator?)を使う
2. NGUIのAtlas内のSpriteを入れ替えまくる
こちら、どちらの方がパフォーマンスに優れていますかね?
スマートフォンなので、あまり負担のかからない処理にしたいのです。
1. の方かなと個人的に思ってますが・・・。
ちなみに、アニメーションは自由に止めたり再生したいです。
お詳しいかたいらっしゃいましたら、ぜひご教授いただきたいです。
252:名前は開発中のものです。
14/07/05 21:02:02.66 LqlDa1fK.net
>>245
Assetを購入しなければ
一生オツムが弱いまま終わってしまいますよ。
本当にそれでいいのですか?
253:名前は開発中のものです。
14/07/05 21:11:58.63 5RDMk77l.net
>>245
シェーダを下記のように変更したらどうでしょうか
SubShader {
Tags { "RenderType"="Transparent" "Queue"="Transparent+1"}
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
~略~
}
254:名前は開発中のものです。
14/07/05 21:24:05.24 yKo8Fb0P.net
>>245
水とか透明表現の関係は描画順序とかにも依存するので一概にコレが原因って言うのは非常に難しいよ
255:名前は開発中のものです。
14/07/05 21:48:11.50 6/5YeGIR.net
>>245
反対側からみてみ?
描画順の問題だったら見え方が違うかもしれないよ
モニターの裏から見ろって事じゃなくて、おぶじぇくとのむこうからみるってことだからな
256:名前は開発中のものです。
14/07/05 21:53:25.70 SilqY6PO.net
>>248,233,234さん
非常に助かりました!
透明にする時はTagでの描画順序的なものを考慮するべきだったんですね。
これでやっとモーション作りに移れそうです。
迅速な返答、ありがとうございます。
257:名前は開発中のものです。
14/07/06 00:00:05.93 N5QQMiFF.net
>>251
最近のunityスレは殺伐としてるのでとっても心あたたまったよ
頑張れ
258:名前は開発中のものです。
14/07/06 01:27:30.34 +x1vY1xa.net
>>232
幼女っぽい
259:名前は開発中のものです。
14/07/06 02:18:14.83 1ai0I56Z.net
Shuriken(ParticleSystem)のrotationの回転軸は変えられないのでしょうか
波動エフェクトを様々な角度にして生成したいのですが
260:名前は開発中のものです。
14/07/06 02:45:22.90 jnVGzpVR.net
>>254
アセットを買えばいいと思うよ
261:名前は開発中のものです。
14/07/06 06:22:10.29 hlWRxZH9e
Unity2Dで
モンスターを次々と左右から出して中心に向かって歩かせたいのですが、
scaleをx=-1にして反転画像を使うとドローコールがどんどん増えます。
始めから反転画像を用意する以外にドローコールを増やさない方法はありますか?
262:名前は開発中のものです。
14/07/06 09:57:14.52 b+O76MgTq
ちょっと疑問に思ったんだけど
質問スレのアドレスってググると2つあって
レスは同じものがあるのだけれど、
微妙にレスの番号とか、レスのあるなしがあるけどなんで?
スレリンク(gamedev板:980番)
スレリンク(gamedev板)
263:名前は開発中のものです。
14/07/06 08:34:29.99 +M1clTAW.net
javascriptでゲーム制作を勉強中です。
"!"の使い方について教えてください。
ちょっと詳細を省きますが、
下記のような式がありまして(色々省いています)
var open_switch : boolean ;
var temp_open_switch : boolean ;
if (temp_open_switch != open_switch)
→これは比較演算式で左右の値が等しくない場合は”ture”ですよね
if (!open_switch)
→このように、先頭に来る場合はどのような意味になるのでしょうか?
ググったけれ見つけられず、
申し訳ございませんが、宜しくお願いいたします。
264:名前は開発中のものです。
14/07/06 08:41:02.52 1ai0I56Z.net
>>258
if (!open_switch)
は
if (open_switch==false)
と同義
265:名前は開発中のものです。
14/07/06 08:50:31.77 +M1clTAW.net
>>259
なるほど、ありがとうございます!
そうすると下記のような場合だと
var open_switch:GameObject;
if(!open_switch)
→
”open_switch”が"GameObject"とイコールではないとなるのでしょうか…
すみません、宜しくお願いします。
266:名前は開発中のものです。
14/07/06 08:51:42.60 FBnZyoZb.net
Unityで実装されたブラウザアプリの実行時速度を
外部からコントロールできるような手法やツールはあるのでしょうか。
Unityアプリのスピードを、速くしたり、遅くしたりということをツール等を
使ってできるのかがわかりません。
タスクマネージャからブラウザのプロセスの優先度を下げたり、上げたりして
みましたがアプリのスピードを変える事ができませんでした。
どなたかご存知でしたらご教授ください。
267:名前は開発中のものです。
14/07/06 09:04:00.69 1ai0I56Z.net
>>260
その場合はopen_switchがnullのときだけ
つまりopen_switchに何のGameObjectも代入されてない場合にifの先が実行される
・・・と思う
自分もまだ勉強中ゆえ本当にそうかはちょっと自信がない
268:名前は開発中のものです。
14/07/06 09:11:45.22 +M1clTAW.net
>>262
ありがとうございます。
参考にしてみます。
”!”の記入の仕方が色々あり、読み解くのが
難しいです。。。
269:名前は開発中のものです。
14/07/06 10:31:59.86 N5QQMiFF.net
>>263
! variable は数値、真偽値、オブジェクトに対して
variable == 0
variable == false
variable == null
として使う
明示的じゃないので嫌いな人も居るから読みやすいように書けば良いと思うよ。
270:名前は開発中のものです。
14/07/06 10:34:02.81 9dRES+AK.net
∩___∩
|ノ⌒ ⌒ ヽ
/ ●) ●) |
オツカレチャ━━━| ( _●_) ミ━━━ン♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
271:名前は開発中のものです。
14/07/06 10:45:03.89 +M1clTAW.net
>>264
ありがとうございます。
勉強になります!
272:名前は開発中のものです。
14/07/06 11:08:05.44 +M1clTAW.net
サウンドの組み込みについて質問です。
下記のような形で、
指定のゲームオブジェクトに当てはめられている「goalScript」
が「cleared==false」なら「voice」を再生しています。
現状の指定で流れはするのですが、
unity上でのゲーム再生ボタンを押したときに、
頭何フレームかだけ再生されたり、
他のアクションを起こしたときも、動揺に
数フレームだけ再生されたりと
不自然な挙動をします。
色々調べはしたのですが原因がわかりせん。
すみませんが、アドバイスをいただけませんでしょうか。
宜しくお願いします!
var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}
function Update () {
if(goalScript.cleared==false){
audio.Play();
audio.clip = voice;
}
}
273:名前は開発中のものです。
14/07/06 11:13:39.06 9dRES+AK.net
∩___∩
|ノ⌒ ⌒ ヽ
/ ●) ●) |
オツカレチャ━━━| ( _●_) ミ━━━ン♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
274:名前は開発中のものです。
14/07/06 11:36:08.98 W+VtYmCA.net
audio.Play();
audio.clip = voice;
これ逆じゃね?
あと毎回Play呼ばれてね?
275:名前は開発中のものです。
14/07/06 11:42:45.52 +M1clTAW.net
>>269
ありがとうございます。
逆というと、こういうことでしょうか。。。
audio.clip = voice;
audio.Play();
また、毎回プレイで呼ばれている、確かに
何かアクションを起こす度に音がなります。
それは、「audio.Play();」の再生方法が間違っているのでしょうか。
276:名前は開発中のものです。
14/07/06 12:07:34.19 /ZhdI6Tk.net
Updateメソッドは毎F呼ばれる
falseにずっとなってても1度しか鳴らしたくないのであれば
フラグでも立てればいいのでは?
var flag : int = 0;
function Update () {
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1; //再プレイ抑止
}
277:名前は開発中のものです。
14/07/06 12:07:36.22 A7UAPEqP.net
audio.Play()のつかいかた自体と言うよりも、
毎回、音がなってるからそれ制御してやって。
278:名前は開発中のものです。
14/07/06 12:24:22.63 www09xjy.net
>>270
アセットを購入しましょう
279:名前は開発中のものです。
14/07/06 12:24:31.86 +M1clTAW.net
>>271
Updateの考え方が分かりました。
PG初心者なもので、ありがとうございます。
毎F呼ばれるので、スタート時や何かアクションを
起こしたときに再生されるのですね。。。
また、ご連絡いただきましたスクリプトですと、
「cleared==false」になったと同時に「flag = 1」に
なってしまいます。
「audio.Play()」再生後に「flag = 1」にするには、
どのように対応すれば宜しいでしょうか。
すみませんが、宜しくお願いします。
280:名前は開発中のものです。
14/07/06 12:46:49.69 g+013jS2.net
どういう用途でサウンドを再生したいの?
「スタート!」とかBGMとか効果音とかでやり方変わるよ
初心者ならフローチャートみたいのを書いた方が楽にできるだろうし、
論理的な考え方も身につくんじゃないかな?
281:名前は開発中のものです。
14/07/06 12:52:35.12 /ZhdI6Tk.net
>>274
audio.Play();
audio.clip = voice;
ここ2ステップの正当性については検証していませんが
処理順的にvoiceが鳴ったあとにフラグONされるはずですが・・・
デバッガでステップインしたらちゃんとそこを通っていますか?
voiceにはちゃんと中身が入っていますか?
282:名前は開発中のものです。
14/07/06 12:57:30.13 +M1clTAW.net
>>275
256です。
度々すみません
"キャラを3Dフィールドで動かして、「goalObj」というアーチオブジェクトを
通過したら、「voice」を再生。
また再度通過しても、同様に「voice」を再生する。"
という使用でサウンドを鳴らしたいと考えています。
宜しくお願いします。
283:名前は開発中のものです。
14/07/06 13:10:34.33 +M1clTAW.net
>>276
256です。
いただきましたスクリプトで下記のように記述しています。
現状このような状態です。
・再生すると「flag」が常に1の状態です。
・「flag = 1」の部分をコメントアウトすると音声が流れます。
・「cleared==false」になったときに「flag = 0」になり
「voice」の再生が終わったら「flag = 1」になるイメージでしょうか。
(書き方がちょっと分かりませんが…)
宜しくお願いします。
var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
var flag : int = 0;
function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}
function Update () {
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1;
}
}
284:名前は開発中のものです。
14/07/06 13:27:50.82 N5QQMiFF.net
goalScript.clearedって通過した瞬間だけ1になるようにできないの?
あるいは goalScriptのclearedをクリアチェックして更新してる箇所で
if(audio.isPlaying == false) {
audio.clip = voice;
audio.Play();
}
ぢゃないの?
も一つおまけにゴール通過した時とゴール地点に居座った時の区別とか付く?
285:名前は開発中のものです。
14/07/06 13:33:54.41 yBLHkZ9t.net
まず、Updateの仕様を理解するところからはじめようぜ。
そのスクリプトをつけたゲームオブジェクトがシーンに存在している間は、1秒間に60回とか永遠にUpdateは実行される。
なにかのボタンを押した時だけ再生したいとかなら、そのボタンを押したという情報をUpdate内で判断してplayを実行しなきゃならん。
それが、flagだ。
だから、ボタンを押した時にこのflagを1にしてやる処理を書かないと動かん。
286:名前は開発中のものです。
14/07/06 13:46:21.21 /ZhdI6Tk.net
>>278
アーチっていうのが何か分からないのですが100m走のゴールのようなK点ですか?
そのK点に透明のIsTriggerオブジェクト置いてキャラとK点に置いた
IsTriggerオブジェクトが接触したら(通過したら)
var audioclip : AudioClip; // ボイスフィールド
void OnTriggerEnter (Collider coll){
if(coll.gameObject.tag == "IsTriggerオブジェクト")
{
audio.PlayOneShot(audioclip); //ボイス再生
}
}
とかすればいい気がします
Enterなら接触した瞬間なので一度しか鳴りません
var audioclip : AudioClipはインスペクタから鳴らしたいボイスファイルをアタッチします
287:名前は開発中のものです。
14/07/06 13:47:48.80 yBLHkZ9t.net
まちがった。修正。
> だから、ボタンを押した時にこのflagを1にしてやる処理を書かないと動かん。
正)flagを0に
288:名前は開発中のものです。
14/07/06 13:47:52.35 +M1clTAW.net
>>279
256です。
”goalScript.clearedって通過した瞬間だけ1”そうなのですが、
書き方がわからず悩んでいるところです。。。
>>280
言われている通りで、
Updateが毎フレーム実行していることがようやく理解出来たところです。
”flagを1にしてやる処理”ここが261さんの返答でも書きましたが、悩んでいるところです。
宜しくお願いします。
289:名前は開発中のものです。
14/07/06 13:53:14.81 9dRES+AK.net
∩―-、
/ (゚) 、_ `ヽ
/ ( ● (゚) |つ
.オツカレチャ━━━| /(入__ノ ミ━━━ン♪
、 (_/ ノ
\___ ノ゙
/ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
290:名前は開発中のものです。
14/07/06 14:19:05.13 +M1clTAW.net
256です
サウンドの件ですが、
var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
var flag : int = 1;
function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}
function Update () {
ーーここの部分に「cleared==false」なら「flag」を
0にする指定を書くいめーじでしょうかーー
if(goalScript.cleared==false && flag == 0){
audio.Play();
audio.clip = voice;
flag = 1;
}
}
宜しくお願いします。
291:名前は開発中のものです。
14/07/06 14:57:57.08 Ml1Wif2C.net
>"キャラを3Dフィールドで動かして、「goalObj」というアーチオブジェクトを
>通過したら、「voice」を再生。
>また再度通過しても、同様に「voice」を再生する。"
>という使用でサウンドを鳴らしたいと考えています。
キャラを動かしてgoalObjとの衝突判定取れるとこまでは出来てるんだよな・・・?
本でも買って一から勉強したほうがいいレベルのような気がするが
黄色い本がオススメだぞ
292:名前は開発中のものです。
14/07/06 15:00:44.87 N5QQMiFF.net
まず何が解っていないのかすら解っていないと思うので>>286が述べているように書籍なりなんなりで一通りの事を覚える方が良いと思う。
ツクールとかと異なって細かい事までできる分Unityは言われているほど簡単じゃないから。
293:名前は開発中のものです。
14/07/06 15:21:00.72 +M1clTAW.net
>>286
動きの方は問題ないのですが、
サウンドの制御が上手くいきません。
なるのだけれど、&qu
294:ot;Updateが毎フレーム実行"というところで 引っかかり、余計なところで再生してしまう。 モーションもサウンドと似たようなスクリプトだけれど、 サウンドは上手くいきませんね。。。 unity入門は一通り目を通したのですが、 中々応用が厳しい状態です。
295:名前は開発中のものです。
14/07/06 15:25:03.44 N5QQMiFF.net
>>288
本読んでいるってことはGoalオブジェクトとの衝突判定にはCollision使ってるんだよね?
ならCollisionチェック(上でだれかが書いていたけど)のあるScript側でゴール音ならすだけじゃないの?
296:名前は開発中のものです。
14/07/06 15:44:08.47 +M1clTAW.net
>>289
すみません、ちょっと話がループしてしまうのですが、
現状のスクリプト(下記のもの)
でも音がなるのですが、
unity上で再生ボタンを押したときなど、
余計な時にも成ってしまう。
→"Updateが毎フレーム実行"の為に起こってします。
そこで、その部分の制御方法が知りたいです。。。申し訳ないです。
その他UIなどのからみもあり、出来れば現状のスクリプトで
解決したく思っております。
また、現状のものに過失修正するのでは、不可能の対応なのでしょうか。
度々お聞きして申し訳ございませんが、宜しくお願いします。
var goalObj:GameObject;
var goalScript:GoalScript;
var voice: AudioClip;
function Start () {
goalScript=goalObj.GetComponent("GoalScript");
}
function Update () {
if(goalScript.cleared==false){
audio.Play();
audio.clip = voice;
}
}
297:名前は開発中のものです。
14/07/06 15:47:52.33 BQWLChCY.net
goalScript.clearedをゴールの判定したところでfalseにする
そしてUpdateで
if(goalScript.cleared==false){
goalScript.cleared=true●●●ここを追加
audio.Play();
audio.clip = voice;
}
かね
298:名前は開発中のものです。
14/07/06 15:48:31.46 BQWLChCY.net
あーでもゴール判定するところをこれ以降呼ばないようにしないと何度も出るな
299:名前は開発中のものです。
14/07/06 15:49:11.00 BQWLChCY.net
あ、上にあることと同じこと書いてあるかもしれないごめn
300:名前は開発中のものです。
14/07/06 16:18:25.09 kNYy9+kR.net
書き込めるかテスト
301:名前は開発中のものです。
14/07/06 16:21:41.06 kNYy9+kR.net
あー失礼
OnCollisionExitで
cleared=falseしてやればいんじゃね
曲の途中でexitされるのがイヤならそれが終了するまで待つ必要があるけど
302:名前は開発中のものです。
14/07/06 16:25:51.67 www09xjy.net
アセットを購入したらそんな面倒なことしなくてもいいよ
303:名前は開発中のものです。
14/07/06 16:52:22.66 +M1clTAW.net
>>295
ありがとうございます。
「OnCollisionExit」調べさせていただきます。
しかしながら、申し訳ないのですが、
「audio.Play(); 」を一回だけ実行する方法が知りたいです。
現状のスクリプトですと、
unity上で再生ボタンを押したときなど、
余計な時にも鳴ってしまう状態です。。。
宜しくお願いします。
304:名前は開発中のものです。
14/07/06 17:03:51.29 kNYy9+kR.net
>unity上で再生ボタンを押したときなど、
cleared==false
で鳴るんでしょー
初期値がfalseなら最初にUpdateが来たときに鳴るのは正常な動作だよ
cleared=trueに初期化して
何者かがCollisionEnterしたときにcleared=falseにしてあげれば
一回だけ鳴るよ
trueとfalse逆のほうが意味が混乱しないかもしれないけど
305:名前は開発中のものです。
14/07/06 17:34:11.18 www09xjy.net
>>297
アセット買えばいいと思うよ
306:名前は開発中のものです。
14/07/06 17:44:36.50 h+L1nGu/.net
>>297
自分だったらプレイヤーに
function Goal {
audio.clip = voice;
audio.Play();
}
というメソッドを用意して、ゴールオブジェクトのOnTriggerEnter(Collider other)で
other.gameObject.SendMessage("Goal")
とメッセージを送ります。Updateは使いません
307:名前は開発中のものです。
14/07/06 17:45:49.89 FOrSI5nd.net
>>262
たしか、if(x)が実行されないのは、x=0の時だけで、x=10とか、でも実行されるよな?不安になってきた
308:名前は開発中のものです。
14/07/06 19:53:39.89 1ai0I56Z.net
>>301
その辺は>>264が完璧だと思う
x=10でも実行される
309:名前は開発中のものです。
14/07/06 20:08:00.79 8bCjoDHE.net
まさか音源のコンポーネントの起動時に再生するチェックボックスにチェックが入ってるんではあるまいな?
310:名前は開発中のものです。
14/07/06 20:12:44.73 FOrSI5nd.net
>>302
サンクス
311:名前は開発中のものです。
14/07/06 22:09:08.54 1ai0I56Z.net
なぜだ・・・
再生するたびにカメラの追従がガタガタになったり直ったりする
312:名前は開発中のものです。
14/07/06 22:12:20.98 +M1clTAW.net
256です
どうやら上手くいきました。。。
>>271さんのものをベースに再生指定方法を「PlayOneShot」に変更しましたら、
予定した再生方法に出来ました。
"function Update"だと"audio.Play()"は機能しないのですかね。
"function Start"だと再生されるのですが。。。
ひとまず、
色々アドバイスいただき、ありがとうございました!!!
313:名前は開発中のものです。
14/07/06 22:38:43.47 qYY8rbjF.net
Unityでゲーム作れる男の人ってステキ!
みたいな感じでハーレム築けませんかね?
314:名前は開発中のものです。
14/07/06 23:25:21.79 6HL28AkK.net
>>305
オブジェクトを物理で動かしてカメラをUpdate()でうごかしたり
オブジェクトとカメラをUpdate()で動かしたりするとそうなる、
かもしれない。
315:名前は開発中のものです。
14/07/06 23:43:29.23 1ai0I56Z.net
自己解決しました
Inspectorにカメラそのものかカメラが追従するもの(プレイヤー)が表示されたまま
ゲームを再生するとカメラがガタガタになるらしい
316:名前は開発中のものです。
14/07/06 23:48:26.75 W+VtYmCA.net
Startは初回に1回しか実行されないんだからそりゃ上手く鳴るだろ・・・
全然分かってないと思うんだが大丈夫かよ
317:名前は開発中のものです。
14/07/06 23:59:03.64 qYY8rbjF.net
StartやUpdateの仕様もそうだが、プログラムの基礎が怪しすぎて教えてあげたいが、教えられない。
318:名前は開発中のものです。
14/07/07 06:22:04.29 1a4GRbbJ.net
アセットを買えばプログラムもいらないと思�
319:「ます
320:名前は開発中のものです。
14/07/07 11:59:01.03 NmVEc3Ia.net
Windows の Editer上で、WebViewみたく、Web表示できるアセットってないですかね?
WebViewは、Android,いPhone,Macは、対応してるけど、windowsだけ対応してなくて。
現在開発がWindows中心なのでどうにかそこもカバーしたい。。
321:名前は開発中のものです。
14/07/07 14:05:19.09 HFPJwFqU.net
クラス内のpublicフィールドを全部一括でインスペクタに表示しない方法ってありますか?
フィールドが2~3個なら[System.NonSerialized]でいいんですが
50個くらいのフィールドを全てインスペクタに表示しないようにしたいんですが、
一つ一つに[System.NonSerialized]付けていくしかないですか?
一括でできる方法があれば教えて下さい
322:名前は開発中のものです。
14/07/07 14:28:44.66 xmI8T3g4.net
>>314
方法はいくつかある。
その前にSystem.NonSerialized属性はフィールドをインスペクタに表示しない属性じゃなくて、
フィールドをシリアライズしない属性。非表示だけならHideInInspector属性を使うと良いよ。
んで一括で表示させない方法だけど、まずはそのフィールドが本当にフィールドである必要があるかを考える。
プロパティはシリアライズされないから、{get;set;}とかをつけてプロパティにしてしまう手もある。他クラスから取得できるけど設定できない値とかも作れるよ。
他にはカスタムエディタを定義しておく方法がある。
Editorってフォルダ内に適当に「(クラスの名前)Editor」みたいなスクリプト作る。
UnityEditor名前空間を参照して、Editorクラスを継承する。
CustomEditor属性を付けてフィールドを非表示にしたいクラスを渡す。
OnInspectorGUIメソッドをオーバーライドしてインスペクタの表示処理を書く。
323:名前は開発中のものです。
14/07/07 14:29:13.89 xmI8T3g4.net
>>315の例
<例>
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(インスペクタをカスタマイズしたいクラス))]
public class ExampleEditor : Editor
{
public override void OnInspectorGUI()
{
var selectedObject = target as インスペクタをカスタマイズしたいクラス; // ←これが選択中のコンポーネントのインスタンス
// GUI,GUILayout,EditorGUI,EditorGUILayoutなんかを使ってインスペクタの表示を好きにいじれる。
EditorGUILayout.LabelField( "このクラスのフィールドは表示しないよっ!" );
// base.OnInspectorGUI(); ←このコメントを外すと普通にインスペクタが表示される。
}
}
324:名前は開発中のものです。
14/07/07 14:44:25.67 HFPJwFqU.net
ありがとうございます。参照にします。
ちなみに、System.NonSerialized属性にするとセーブ機能なんかでバイナリ保存したい場合とか
保存できないですよね?
あと、どっかのサイトにHideInInspectorよりSystem.NonSerializedの属性使う方が
トラブルが少ないと書かれていたのでSystem.NonSerializedがいいのかなと思っていました
325:名前は開発中のものです。
14/07/07 14:45:00.13 HFPJwFqU.net
>ありがとうございます。参考にします。
すみません、誤字でした