2012年10月28日

unity3D の基本から学ぶ00

 unity3D をやり始めて、5ヶ月が過ぎました。その間、Unityのチュートリアルをやりましたが、残念ながら最後まで行けませんでした。
 大体どういうことをやっているのかは、何となく理解したのですが、ではいざ何かを作れるかというと全然ダメです。やはり1からちゃんと勉強していかないと無理かな、と思います。
 そこで、もう一度基礎の基礎からやり直そうと決心し、あちこち調べてみましたら、Unityの日本語サイトがいつの間にか充実していました。 以前見たときは簡単な説明ぐらいしかなかったのですが、Unityの紹介やら、チュートリアルやらが増えているではありませんか。

 というわけで、Unity日本語サイトの中のドキュメントをやってみたいと思います。
 まずは、Unity BASIC(Home>Developer>ドキュメント>チュートリアル>Unity BASIC)という基本操作のドキュメントをザッと読んでみたいと思っています。

 いつかUnityでゲームを1本作れることを夢見つつ…ぴかぴか(新しい)
-------------------
ラベル:Unity3d
posted by Shindo Izo at 13:00| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月02日

Unity3D の基本から学ぶ01

 基本をすっ飛ばしてますので、一からやり直しです。
 Unity3D の基本から勉強していきたいと思います。「Unity Basic」を読みながら、私にとって気になる点や憶えておいた方が良さそうなことを書いておきたいと思います。
 今日は、

 インターフェースを学ぶ

からです。

1openinggamendayo.jpg

<Project>
1.Projectは、ゲームで使用される全てのAssets(シーン、スクリプト、テクスチャー、音声ファイル、プレファブなど)が格納される場所。
2.Project内のAssetsはProject意外に移動してはならない。必ずProjectの中で管理すること。
3.Assetsを追加する場合は、Menu>Assets から行うか、OS上からD&Dする。削除はPreject>Create>Delete で出来る。
4.Project内のディレクトリーは、Altキーを押しながらクリックすると、そのディレクトリー内の全てのディレクトリーが開閉する。

<Hierarchy>
1.Hierarchyは、現在のシーンで使用される全てのゲームオブジェクトが格納される場所。
2.階層化して、複数のオブジェクトを一体化できる。

<Tool Bar>
1.トランスフォーマー(一番左のアイコンが4つあるもの)
・手のひらマーク:シーン全体を動かす(視点が動く)
・上下左右矢印マーク:オブジェクトの移動
・回転矢印マーク:オブジェクトの回転
・斜め4方向矢印マーク:オブジェクトの拡大縮小
2.トランスフォームギズモトグル(左から2番目のスイッチ二つ)
 座標の見方なのでしょうが、今のところよく分かっていません。
3.再生/一時停止/ステップボタン(真ん中のぷれいボタン類)
 ステップボタンというのは使ったことないのですが、1コマずつ動かすという意味でしょうか…。よく分かりません。
4.レイヤードロップダウン
 オブジェクトの表示数をコントロールするもののようですが、よく分かっていません。
5.レイアウトドロップダウン
 これは画面全体のレイアウトの種類です。好きなパターンを選べばいいのでしょう。

 今日はここまで。2,3分からない部分がありますが、今後の課題です。
 つづく…
------------------
ラベル:Unity3d
posted by Shindo Izo at 20:16| Comment(2) | Unityのお勉強 | 更新情報をチェックする

2012年11月12日

Unity3D の基本から学ぶ03


 「Unity Basic」インターフェースを学ぶ

 続きです。Scene View,Game View,Inspector ですが、重要なことばかりなので殆ど丸写しになりそうです。自分のために(頭に残すために)書いておきます。

<Scene> シーンビュー
1.画面上でのの操作
・左ボタンドラッグ:選択
・右ボタンドラッグ:画面回転
・中ボタンドラッグ:平行移動
・中ボタン回転:ズームインアウト

----以下同じような動作ですが、矢印キーを使うとShiftキーと同時に押せばスピードアップできて便利。ツールバーの手のひらツールなども同じ動作なので憶える必要はないように思います---
 ・Alt+左ボタンドラッグ:右ボタンドラッグと同じ
 ・Alt+中ボタンドラッグ:中ボタンドラッグと同じ
 ・Alt+右ボタンドラッグ:ズームインアウト
 ・上下左右矢印:中ボタンドラッグと同じ動き
 ・右ボタン+A,Dキー:左、右に移動
 ・右ボタン+Q,Eキー:下、上に移動

2.選択したオブジェクトをシーンビューのセンターへ
・Fキーイッパツ!

3.シーンギズモ … 右上の角にあるもの
・直交座標方向からのカメラにチェンジするときに使う
・シーンギズモの中央をShift+左クリック:パースペクティブと等角表示の切り替え。これは便利。

4.オブジェクトの配置
・選択して、移動、回転、拡大、縮小

5.シーンビューコントロールバー (説明がないので以下推測です)
・表示法切り替え … テクスチャー、ワイヤーフレーム表示など
・色(?) … RGB表示、アルファ表示など
・ライト … ありなしの切り替え
・バック … ありなしの切り替え
・音声 … ありなしの切り替え
・Gizmos … 用途不明
・検索欄 … 用途不明

1sceneviewja.jpg

<Game> ゲームビュー
1.プレイモード
・プレイボタン…プレイ、一時停止、コマ送り
・プレイモード中の設定値変更はプレイ終了後クリアーされるので要注意。

2.ゲームビューコントロールバー
・表示アスペクト比変更
・表示マキシマイズOn/Off
・Statics … グラフィックパフォーマンスの最適化に使う、と書かれていますがよく分かりません。
・Gizmos … プレイすると設定したライトやらスピーカー(効果音)が表示されます

2gameviewda.jpg

 最初のシーンビューの画面上での操作、サイトの説明と私のPCで少し違うようです。バージョンアップがかなりあるので、変更されたのかも知れません。インスペクターはまた今度、ということで…。ふらふら
 つづく…
------------------
ラベル:Unity3d
posted by Shindo Izo at 19:05| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月15日

Unity3D の基本から学ぶ04


 「Unity Basic」インターフェースを学ぶ

の続きで、Inspector をやろうと思って一読したのですが、どうもとりとめがなく、まとめるのを諦めました。Inspectorは、要するに選択中のオブジェクトなどの内容(スクリプト、etc)を表示するウィンドウで、編集する場所です。
 その次に、

 アセットワークフロー
 シーンを制作
 パブリッシュ

と続きます。が、これらも何をするかということをザーッと述べているだけなので、記事にするのは諦めました。一読するだけでよいのでは、と思われます。読んでも何をどうしたらいいのかサッパリ分かりませんのでふらふら
 ただ、最後のパブリッシュは全く初めての方は頭に入れていた方がいいかも知れません。
 しかし、パブリッシュ以前の、スクリプトの書き方などが全く分からないので(私だけかも知れませんが)、そちらを充実させてからでも遅くはない、と言うか、パブリッシュはゲームが完成して最後にやることなので、それから読み直しても全然遅くないように思います。
 私の場合、ゲームを発表するどころか、なーーんにも作ることができない状態です。とにかく、発表などどうでもいいから、超簡単なものでいいから何か作れるようになりたいです〜。

 というわけで(笑)、前進方向チェンジします。

 Developerタグ内には、

 ドキュメント
 リソース

とあります。リソースは便利で楽しそうなものがあるのですが、今は手をつけない方が無難な気がします(これも私だけかも知れませんが)。ドキュメント内には:

 チュートリアル
 ユーザーマニュアル
 スクリプトリファレンス
 リファレンスマニュアル

があります。残念ながら、ユーザーマニュアル、スクリプトリファレンス、リファレンスマニュアルとも英語のまんまです。覗いてみましたが、目次だけで頭がクラクラしてきました。とっても必要なので早く日本語にしていただければなぁ、と…、切に…もうやだ〜(悲しい顔)
 で、残るチュートリアル。その中の、Unity Basicは終了(わーい(嬉しい顔)たらーっ(汗))したので、「はじめてのUnity」をやってみたいと思います。というか、それ以外全部英語で無理です。(3D Platform Gameは有志の方々による翻訳のお陰で何とかやれましたが)
 「はじめてのUnity」も第1回で止まってますが、とにかくこれをやってみようと思います。
 立体版ブロック崩し、ですね。面白そうですが…???
------------------
ラベル:Unity3d
posted by Shindo Izo at 19:15| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月17日

Unity3D の基本から学ぶ05

 では、

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

を勉強していきたいと思います。
 立体版ブロック崩し…なんかワクワクしますねわーい(嬉しい顔)
 以下、サイトの本文とほとんど同じことの繰り返しになるかとは思いますが、復習のためにも書いていきたいと思います。もし私なりに気づいたことがあれば書きたいと思っています。

<New Projectを作る>
 私の場合、すでに何個かゴミプロジェクトを作っていますので、下のように表示されます。全く初めての方は、おそらくシューティングゲームがいきなり表示されるのではないかと思いますが、その場合、サイトのようにFile>Create New Projectで作ればいいと思います。
1projectdukuri.jpg

<Sceneに名前をつける>
2scennamehozon.jpg

<Cube(立方体)を追加し変形する>
 ボールが反射する壁の部分ですね。
3cubesettija.jpg

<複製して位置、大きさを変える>
 長い壁の部分ですね。
4duplicatesuru.jpg

<さらに複製して、壁の完成>
5wakukanseidasyo.jpg

 とりあえず、枠組み完成!
 うーん、楽しい!ぴかぴか(新しい)
 たとえ簡単なものでもいいから、最初から作る、って面白いですね。物作り、って感じがします。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 22:01| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月23日

Unity3D の基本から学ぶ06


 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきを勉強していきたいと思います。

 カメラと証明を配置する

からです。

<カメラをゲーム場面に向ける>
 画面右上のシーンギズモ(視点選択ツール)を使うと分かりやすいです。
1maincameraidou.jpg

<ライトを設置する>
2daylightjana.jpg

<ラケットを配置する>
 枠と高さを合わせる必要があります。
3rakettodane.jpg

<ボールを配置する>
4ballokunoda.jpg

<Hierarchyを整理する>
 これをやらないと、段々オブジェクトが増えるにつれ訳が分からなくなってしまします。
5seiriseiton.jpg

 おお、ブロック崩しっぽくなってきました晴れ
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 12:27| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月25日

Unity3D の基本から学ぶ07

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきを勉強していきたいと思います。

 ボールに物理特性を与える

からです。

<BallにRigidbody追加>
 Rigidbodyというのは、剛性という意味だそうです。物理特性を与えます。
 Dragは運動抵抗、Use Gravityは重力を与えるか否か、Constraintsは制限といった意味です。
 つまり、「重力なしで、空気抵抗なしで、回転運動もなしで、上下にも移動しない」って感じですね。
 後の項目の意味も知りたいですね。マニュアルには載っていますが英語なので、またの機会にしたいと思います。
1ballbuturi.jpg

<ボールに初速を与える>
 スクリプトの出番のようです。
2ballcontrolljan.jpg

<スクリプトを打ち込む>
 先頭の#pragma strict はネットで調べたら、静的判定…、とか何とか。意味がよく分かりませんでした。つけておいても問題がないようなのでそのままにしてます。
3ballscriptdane.jpg

<一旦リセットする>
 これをやらないと打ち込んだスクリプトが反映されません。
4resetiruyo.jpg

<スクリプトの関係づけ>
 ボールにスクリプトを付与します。
5scripttuikajaken.jpg

 うーーん、いきなりスクリプトの意味が分かりません。リファレンスマニュアルが欲しいなぁちっ(怒った顔)
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

ラベル:Unity3d
posted by Shindo Izo at 18:21| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年11月28日

Unity3D の基本から学ぶ08


  「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきを勉強していきたいと思います。
 が、前回出てきた、Ridgidbodyの設定の所をもう少し勉強したいと思います。
1rigidbodydesuze.jpg
 Ridgidbody マニュアルで調べてみました。全部英語なので、自分なりに訳してみました。(私はせいぜい英検3級レベルですので、間違いが多々あると思いますので、その点ご了承ください。)

<マニュアルを見る>
 マニュアルを見ると以下のことが書いてあります。

<Mass>The mass of the object (arbitrary units). It is recommended to make masses not more or less than 100 times that of other Rigidbodies.
 物体の質量。(以下意味不明。他の物体の質量の100倍が限界という意味か?)。
<Drag> How much air resistance affects the object when moving from forces. 0 means no air resistance, and infinity makes the object stop moving immediately.
 空気抵抗。0は空気抵抗なし。無限大は即停止を意味する。
<Angular Drag>How much air resistance affects the object when rotating from torque. 0 means no air resistance, and infinity makes the object stop rotating immediately.
 回転時の空気抵抗。0は空気抵抗なし。無限大は即回転停止を意味する。
<Use Gravity> If enabled, the object is affected by gravity.
 重力あり、なし。有効時、物体は重力の影響を受ける。
<Is Kinematic>If enabled, the object will not be driven by the physics engine, and can only be manipulated by its Transform. This is useful for moving platforms or if you want to animate a Rigidbody that has a HingeJoint attached.
 Kinematicは「運動学的な」という意味。有効時、物理エンジンの影響を受けず、トランスレートによって操作される。プラットフォームを動かす場合や、関節のある物体をアニメーションする場合に使う。(ユーザーが自由に動かす時に使う、という意味か?)
<Interpolate> Try one of the options only if you are seeing jerkiness in your Rigidbody's movement.
 None No Interpolation is applied.
 Interpolate Transform is smoothed based on the Transform of the previous frame.
 Extrapolate Transform is smoothed based on the estimated Transform of the next frame.
 Freeze Rotation If enabled, this GameObject will never rotate based on collisions or forces added via script -- it will only rotate when using transform.Rotate().
 補間方法。動きを滑らかにする方法の選択。(ぎくしゃく感を減らす方法か?)
 None:補間なし。
 Interpolate:前のフレームを基準にして推定補間する
 Extrapolate:次のフレームを基準にして推定補間する
 Freeze Rotation:ぶつかっても何をされても回転しない。スクリプトによってのみ回転する。(これはメニューにない。意味が分かったような分からないような…)

<Collision Detection>Used to prevent fast moving objects from passing through other objects without detecting collisions.
 Discrete Use Discreet collision detection against all other  in the scene. Other colliders will use Discreet collision detection when testing for collision against it. Used for normal collisions (This is the default value).
 Continuous Use Discrete collision detection against dynamic colliders (with a rigidbody) and continuous collision detection against static MeshColliders (without a rigidbody). Rigidbodies set to Continuous Dynamic will use continuous collision detection when testing for collision against this rigidbody. Other rigidbodies will use Discreet Collision detection. Used for objects which the Continuous Dynamic detection needs to collide with. (This has a big impact on physics performance, leave it set to Discrete, if you don't have issues with collisions of fast objects)
 Continuous Dynamic Use continuous collision detection against objects set to Continuous and Continuous Dynamic Collision. It will also use continuous collision detection against static MeshColliders (without a rigidbody). For all other colliders it uses discreet collision detection. Used for fast moving objects.
 衝突検出方法。他の動きの速い物体が衝突検出をすることなく通過するのを防ぐために使われる。
 Descrete:分散型。これが一般的。デフォルト設定。
 Continuous:連続型。(意味不明)
 Continuous Dynamic:ダイナミック連続型。速い動きの物体に使われる。(意味不明)
<Constraints> Restrictions on the Rigidbody's motion:-
 Freeze Position Stops the Rigidbody moving in the world X, Y and Z axes selectively.
 Freeze Rotation Stops the Rigidbody rotating around the world X, Y and Z axes selectively.
 制限項目。Rigidbodyの動きにおける制限の指定。
 Freeze Position:x、y、z軸方向における移動制限指定。
 Freeze Rotation:x、y、z軸を中心軸とする回転制限指定。

<Ridgedbodyの設定>
 上の結果から、Ridgedbodyの設定は、

・Mass 質量。普通はデフォルトの1でいいのではないかと思います。
・Drag 空気抵抗。0なら等速度運動をし、0以上なら段々止まる、って感じだと思います。
・Angular Drag 回転の空気抵抗。デフォルトは0.05ですが、これもそのままでいいのだと思います。
・Use Gravity 重力あり、なし。これは時と場合によりますね。今回のゲームの場合は重力なしですが、3次元ゲームなら必要でしょう。
・Is Kinematic 物理エンジン使用、不使用。よく分かりませんが、これもデフォルトの「不使用」でOKのようです。
・Interpolate 補間方法。色々試してみましたがよくわかりませんでした。これもデフォルトの補間なしでOKのようです。もっと複雑なゲームの場合にいるのかも知れません。
・Collision Detection これも試してみましたが分かりません。デフォルトの分散型でいいのでしょう。
・Constraints 位置と回転の制限ある、なし。これは時と場合ですね。2次元ゲームなら当然y軸はオフでしょうし、3次元ならすべてチェックなしですね。回転も、必要か不必要かはプログラマーの考え方次第かと思われます。


という感じですかね。これである程度スッキリしました。
 うーーん、でも、やはり英語のマニュアル、ってのはきついですね。訳すだけで疲れてしまいました。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 13:03| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年12月01日

Unity3D の基本から学ぶ09

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきを勉強していきたいと思います。
 が、前々回で出てきた、ボールに初速を与えるスクリプトがよく分かっていないので、少し分析してみたいと思います。

<スクリプト>
#pragma strict

var Speed=20.0;
function Start () {
rigidbody.AddForce((transform.forward+transform.right)*Speed,ForceMode.VelocityChange);
}

<スクリプトの分析>
#pragma strict … ?
var Speed=20.0; … 変数宣言(Speedを20.0とする)
function Start(){ } … 最初に(フレームごとではなく)一回だけ呼び出されて{ }内を実行される関数
rigidbody.AddForce … 物体に与える力
transform.forward … Z軸方向(前方)の単位ベクトル
transform.right … X軸方向(右方)の単位ベクトル
 transform.up … y軸方向(上方)の単位ベクトル(???)
ForceMode.VelocityChange … 力のモードが「質量無視して速度変化を加える」
 ForceMode.Force:質量を考慮して継続的力を与える
 ForceMode.Acceleration:質量を無視して継続的力を与える
 ForceMode.Impulse:質量を考慮して衝撃力を与える

<備考>
 transform.forward,transform.rightと来れば反対のバックと左がありそうな感じがしますが、ないので負で表せばいいのだと思います。じゃ、3次元は?と思って調べてみましたら、transform.upというのがありました。これを使えばOKだと思ってやってみたら、何故か考慮されませんでした。理由は分かりません。

 何だか分かったような分からないような…ふらふら
 とにかく、ユーザーが立てたものはSpeedだけで、あとは全部予約語ということでしょうね。難しいなぁ…。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 11:33| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年12月03日

Unity3D の基本から学ぶ10

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきです。
 「ボールのバウンド」からです。

<Physical Material設置、設定>
1physicalmaterialda.jpg

<Physical MaterialをBallに追加>
2physicalchouseija.jpg

<マニュアルによるPhysical Materialの説明>
 例によって、アバウトに訳してみました。

・Dynamic Friction The friction used when already moving. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it come to rest very quickly unless a lot of force or gravity pushes the object.
 運動摩擦。数値は0〜1。0は氷の上のような感じ。1は急速に停止する。
・Static Friction The friction used when an object is laying still on a surface. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it very hard to get the object moving.
 静的摩擦。数値は0〜1。0は氷の上のような感じ。1は動かすには大変力がいる。(じっとしているものを動かそうとする時の感じでしょう)
・Bounciness How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy.
 弾み方。0〜1。0は全く弾まない。1はエネルギー損失なく弾む。(つまり元のスピードで戻る感じかと思われます)
・Friction Combine Mode How the friction of two colliding objects is combined.
 Average The two friction values are averaged.
 Min The smallest of the two values is used.
 Max The largest of the two values is used.
 Multiply The friction values are multiplied with each other.
 摩擦の組み合わせモード。オブジェクト同士の摩擦の組み合わせ。
  Average 2つの摩擦値の平均値使用
  Min もっとも小さい摩擦値を使用 
  Max もっとも大きい摩擦値を使用 
  Multiply 互いの摩擦値を計算する使用法
 (何となくしか分かりません。)
・Bounce Combine How the bouncyness of two colliding objects is combined. It has the same modes as Friction Combine Mode
 弾み方の組み合わせ。組み合わせはFriction Combine Modeと同じ。
・Friction Direction 2 The direction of anisotropy. Anisotropic friction is enabled if this direction is not zero. Dynamic Friction 2 and Static Friction 2 will be applied along Friction Direction 2.
 摩擦の方向性2。もし0でないなら異方向の摩擦が有効になる。Dynamic Friction 2とStatic Friction 2はこのFriction Direction 2に沿って適用される。
・Dynamic Friction 2 If anisotropic friction is enabled, DynamicFriction2 will be applied along Friction Direction 2.
 動的摩擦2。もし異方向の摩擦が有効なら、Friction Direction 2に沿って適用される。
・Static Friction 2 If anisotropic friction is enabled, StaticFriction2 will be applied along Friction Direction 2.
 静的摩擦2。もし異方向の摩擦が有効なら、Friction Direction 2に沿って適用される。

<備考>
 まとめると:
・Dynamic Friction
 運動摩擦。数値は0〜1。0は氷の上のような感じ。1は急速に停止する。
・Static Friction
 静的摩擦。数値は0〜1。0は氷の上のような感じ。1は動かすには大変力がいる。(じっとしているものを動かそうとする時の感じでしょう)
・Bounciness
 弾み方。0〜1。0は全く弾まない。1はエネルギー損失なく弾む。(つまり元のスピードで戻る感じかと思われます)
・Friction Combine Mode
 摩擦の組み合わせモード。オブジェクト同士の摩擦の組み合わせ。
  Average 2つの摩擦値の平均値使用
  Min もっとも小さい摩擦値を使用 
  Max もっとも大きい摩擦値を使用 
  Multiply 互いの摩擦値を計算する使用法
 (何となくしか分かりません。)
・Bounce Combine
 弾み方の組み合わせ。
  Average 2つの弾み値の平均値使用
  Min もっとも小さい弾み値を使用 
  Max もっとも大きい弾み値を使用 
  Multiply 互いの弾み値を計算する使用法
・Friction Direction 2
 摩擦の方向性2。もし0でないなら異方向の摩擦が有効になる。Dynamic Friction 2とStatic Friction 2はこのFriction Direction 2に沿って適用される。
・Dynamic Friction 2
 動的摩擦2。もし異方向の摩擦が有効なら、Friction Direction 2に沿って適用される。
・Static Friction 2
 静的摩擦2。もし異方向の摩擦が有効なら、Friction Direction 2に沿って適用される。

 チュートリアルのボールは、結局、

 運動摩擦なし、静的摩擦なし、弾み方は100%同じ、オブジェクト同士の摩擦は最小値、オブジェクト同士の弾み値は最大値、摩擦の方向性は考慮しない

って感じですかね。分かったような気がしますが…たらーっ(汗)
 とにかく、ボールが無限にバウンドするようになりました。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 18:10| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年12月07日

Unity3D の基本から学ぶ11

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

 つづきです。
 「ラケットを操作可能にしよう」からです。

<ラケットのスクリプト作成>
1racketcontrollerzo.jpg

<ラケットにScriptとRigidbody追加>
2racketrigiddesu.jpg

<Input Managerを開いてみる>
 開いてみたものの、なにをどうしていいのかサッパリ分かりません。
3inputsettingsjane.jpg

<マニュアルを見る>
 例によってマニュアルをザッと訳してみました(へったくそな訳です)。

The Input Manager is where you define all the different input axes and game actions for your project.
 Input Managerとは、プロジェクトにおいて全ての入力する座標軸とゲームアクションを定義するところです。

Properties

<Axes>Contains all the defined input axes for the current project: Size is the number of different input axes in this project, Element 0, 1, ... are the particular axes to modify.
 <座標軸> 全ての定義された入力座標軸:Size は、異なる入力座標軸の数。エレメント 0,1,… これらは変更修正するための特別な座標軸。(入力する座標軸の数でしょうか?)
<Name>The string that refers to the axis in the game launcher and through scripting.
 <名前>座標軸をゲームランチャーやスクリプトで参照する場合の文字列。(スクリプトなどで呼び出すときに使う名前、ということだろうと思います)
<Descriptive Name> A detailed definition of the Positive Button function that is displayed in the game launcher.
 <記述名>ゲームランチャーに表示される正方向のボタン関数の詳細な定義。(意味がよく分かりませんが、画面表示のボタン名かな?)
<Descriptive Negative Name> A detailed definition of the Negative Button function that is displayed in the game launcher.
 <負方向の記述名>ゲームランチャーに表示される負方向のボタン関数の詳細な定義。(意味がよく分かりませんが、画面表示のボタン名かな?)
<Negative Button> The button that will send a negative value to the axis.
 <負方向ボタン>座標軸に負の値を送るボタン
<Positive Button> The button that will send a positive value to the axis.
 <正方向ボタン>座標軸に正の値を送るボタン
<Alt Negative Button>The secondary button that will send a negative value to the axis.
 <代替 負方向ボタン>座標軸に負の値を送る第2ボタン(Altを押すという意味でしょうか?)
<Alt Positive Button>The secondary button that will send a positive value to the axis.
 <代替 正方向ボタン>座標軸に正の値を送る第2ボタン
<Gravity>How fast will the input recenter. Only used when the Type is key / mouse button.
 <重力>どのぐらいの速さでセンターに戻るか(recenterの意味がよく分かりません、再び中心へ、という意味かな?)Typeがキー/マウスボタンの場合に使用
<Dead>Any positive or negative values that are less than this number will register as zero. Useful for joysticks.
 <不活動状態>この数値より正負の値が少ない場合、0とみなす。ジョイスティックに場合に使用。(恐らくここで指定数値以下の時にはジョイスティックは動いてないとみなすのだと思います)
<Sensitivity>For keyboard input, a larger value will result in faster response time. A lower value will be more smooth. For Mouse delta the value will scale the actual mouse delta.
 <感度>キーボード入力においてこの値が大きいほど応答時間が短くなる。低い値ならよりスムーズになる。マウスにおいてはデルタ値が実際のマウスデルタ値にスケーリングされる。(これも分かりにくいですが、キーボードとマウスの応答スピードが決まるということでしょう、きっと)
<Snap>If enabled, the axis value will be immediately reset to zero after it receives opposite inputs. Only used when the Type is key / mouse button.
 <スナップ>有効にすると、座標軸値が反対方向のインプット後、0にリセットされる。Typeがキー/マウスボタンの場合に使用。(逆方向にキーボード/マウスを動かすと座標が0にリセットされる、という意味でしょう、多分)
<Invert>If enabled, the positive buttons will send negative values to the axis, and vice versa.
 <反転>有効にすると、正方向ボタンを押すと負方向の値が送られる。あるいはその逆。(正負逆転、ってとこですかね。)
<Type>Use Key / Mouse Button for any kind of buttons, Mouse Movement for mouse delta and scrollwheels, Joystick Axis for analog joystick axes and Window Movement for when the user shakes the window.
 <タイプ>Key or Mouse Buttonは全てのボタンに対してキーボード/マウスを使う、Mouse Movementはマウスデルタとホイールスクロール、Joystick axesはアナログジョイスティック軸、Window Movementはユーザーがウィンドウを振ったときに使用。
<Axis>Axis of input from the device (joystick, mouse, gamepad, etc.)
 <軸>デバイス(ジョイスティック、マウス、ゲームパッド、etc)から入力される座標軸(どの座標軸を使うかの選択、のようです)
<Joy Num>Which joystick should be used. By default this is set to retrieve the input from all joysticks. This is only used for input axes and not buttons.
<ジョイスティックナンバー>ジョイスティックの場合必須。デフォルトでは、全てのジョイスティックからの入力を取得する設定。これは座標軸入力のみでボタンには使用されない。(ジョイスティックのことはよく分からないのですが、ナンバーがあるのかな?)

<要約してみると…>
 何だか分かったような分からないような、これまたスッキリしませんが、強引に要約してみますと:

<Size> 異なる入力座標軸の数 ???
<Name>座標軸をゲームランチャーやスクリプトで参照する場合の文字列 デフォルト:Horizontal
<Descriptive Name>ゲームランチャーに表示される正方向のボタン関数の詳細な定義 ???
<Descriptive Negative Name>ゲームランチャーに表示される負方向のボタン関数の詳細な定義 ???
<Negative Button>座標軸に負の値を送るボタン デフォルト:左矢印
<Positive Button>座標軸に正の値を送るボタン デフォルト:右矢印
<Alt Negative Button>座標軸に負の値を送る第2ボタン デフォルト:aキー
<Alt Positive Button>座標軸に正の値を送る第2ボタン デフォルト:dキー
<Gravity>どのぐらいの速さでセンターに戻るか Typeがキー/マウスボタンの場合に使用 デフォルト:3
<Dead>この数値より正負の値が少ない場合、0とみなす。ジョイスティックに場合に使用。デフォルト:0.001
<Sensitivity>キーボードとマウスの応答スピード(感度) デフォルト:3
<Snap>オンにすると、座標軸値が反対方向のインプット後、0にリセットされる。Typeがキー/マウスボタンの場合に使用。デフォルト:オン
<Invert>ボタン方向がリバースする
<Type>入力のタイプ指定
 Key or Mouse Button…全てのボタンに対してキーボード/マウスを使う
 Mouse Movement…マウスデルタとホイールスクロール
 Joystick axes…アナログジョイスティック軸
 Window Movement…ユーザーがウィンドウを振ったときに使用
 デフォルト:Key orMouse Button
<Axis>デバイス(ジョイスティック、マウス、ゲームパッド、etc)から入力される座標軸指定 デフォルト:X axis
<Joy Num>ジョイスティックナンバー指定 デフォルト:Get Motion from all Joysticks

<さらに重要点を絞ると…>
 結局、とりあえず重要な項目は:

<Name> 参照されるときの名前。水平はHorizontal、垂直はVertical
<Negative Button>ー方向ボタン デフォルト…左矢印
<Positive Button>+方向ボタン デフォルト…右矢印
<Alt Negative Button>ー方向第2ボタン デフォルト…Aキー
<Alt Positive Button>+方向第2ボタン デフォルト…Dキー
<Gravity>どのぐらいの速さでセンターに戻るかの値 デフォルト…3
<Sensitivity>キーボード・マウスの応答スピード デフォルト…3
<Snap>反対方向のボタンを押したときに0にリセットするか否か デフォルト…オン
<Type>入力タイプ指定
 Key or Mouse Button…キーボード/マウス
 Mouse Movement…マウス
 Joystick axes…アナログジョイスティック
 Window Movement…ウィンドウ(???)

 ジョイスティックを使わなければそんなに深く考える必要ないみたいですね。方向ボタンと入力タイプ(キーボードorマウス)ぐらいでしょうか。
 もっと高度なゲームなどを作っていくときに必要なのかも知れません。
 ああ、労多くして功少なし、骨折り損のくたびれもうけでした。もうやだ〜(悲しい顔)

 ここで

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

は終わっています。第2回はまだかなぁ…がく〜(落胆した顔)
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 16:35| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2012年12月10日

Unity3D の基本から学ぶ12

 「はじめてのUnity」My First Unity 第1回 世界の「骨格」をつくろう

は終わっちゃいましたが、前回のスクリプトを分析しておきたいと思います。(私の解釈なので間違っているかも知れません)

<スクリプト>

var Accel=1000.0;
funtion Update(){
 rigidbody.AddForce(transform.right*Input.GetAxisRaw("Horizontal")*Accel,ForceMode.Impulse);
}

<命令の分析>
 前に出てきた、BallController.jsと似ていますが、少し違う点があります。

var Accel=1000.0; … 変数宣言(Accelを1000.0とする)
function Update(){} … 毎回呼び出されて{}内を実行される関数
rigidbody.AddForce … 物体に与える力
transform.right … X軸方向(右方)の単位ベクトル
Input.GetAxisRaw() … ()内の名前の入力データを取得する
 右方向:1、左方向:-1、動きなし:0 を返す
"Horizontal" … 水平方向のインプット名。(垂直なら"vertical"のはずなんですが、実験しましたが反応しませんでした。) 
ForceMode.Impulse … 質量を考慮して衝撃力を与えるモード。他に:
 ForceMode.VelocityChange … 質量無視して速度変化を加えるモード
 ForceMode.Force:質量を考慮して継続的力を与えるモード
 ForceMode.Acceleration:質量を無視して継続的力を与えるモード

 つまり、右矢印を押したら1*1*1000=1000で質量を考慮した力を加えるということかな。

<備考>
 分かったような、わからないような…。ま、こう書けばラケットが左右に動くということですね。

------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 17:24| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月18日

RigidbodyとWeb Player作成 unity3D


 またまた更新が開いてしまいました(^_^;)
 やっとやる気が少し出てきました。しばらく離れるともう何が何だか分からなくなってしまいました。また1からやり直しです。
 何か超初心者向けの簡単な講座はないかとさがしましたら、

 Unity3DStudent

っていうのがありました。簡単そうなのでこれをトライしてみたいと思います。トップページ右欄の一番下の Beginner をやってみます。
 まずは一番最初の:

 Beginner B00 – Adding Mass / Gravity with Rigidbodies

です。
 Rigidbody というのは「剛体」という意味です。
 内容は:

 立方体が床に落ちて跳ねる

それだけです。

<Rigidbodyを使う>
1bb00desu.jpg

 これからプログラム作成結果をWebにアップしたいと思います。あまりにもくだらないので、次々上書きします。そこで、Web Playerの書き出し方をメモしておこうと思います。(また忘れないように)
 
<Webで使えるようにする>
2buildsettingsdesu.jpg

------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 15:20| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月20日

衝突検出の基礎 unity3D

 Unity3DStudent講座の第2回目は、BasicCollision Detection、衝突検出の基礎ということで、今日もお勉強です。
 内容は、

 立方体が床や壁に当たったときにコンソールに表示する

というもの。

<床と壁と箱の作成>
1kabetukidaa.jpg

<スクリプトの追加と実行>
 打ち込んだスクリプトは:

function OnCollisionEnter () {
Debug.Log("Hit Something!");
}

 衝突があったらコンソールに文を表示する、という命令だと思いますが、何故か1回しか表示してくれません。
2hitsomthingjikkou.jpg

<スクリプトの変更と実行>
 変更後のスクリプトは:

function OnCollisionEnter(shoutotu : Collision){
if(shoutotu.gameObject.name == "Yuka"){
Debug.Log("Hit Yuka!");
}else if(shoutotu.gameObject.name == "Kabe"){
Debug.Log("Hit Kabe!");
}
}

 床に当たった場合と壁に当たった時それぞれ文を表示する、という感じですね。
 でも、またこれも1回ずつしか表示してくれませんでした。何か打ち込みまちがいだろうかと探してみたんですがよくわかりませんでした。
3kabeyukadesu.jpg

 講座2回目にして行き詰まっている、って…、うーーん、先が思いやられますもうやだ〜(悲しい顔)

------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

ラベル:Unity3d
posted by Shindo Izo at 20:02| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月21日

インプット検出 unity3D

 今日も、
 Unity3DStudent Beginner を勉強してみます。
 今日は:Beginner 02 - Detecting Inputです。
 意味は、「インプットの検出」って感じでしょうか。
 内容は:

 スペースバーを押すとコンソール画面に文を表示する

というものです。要するに、

 何かキーを押されたら何かをする

プログラム、ってことでしょう。

<JavaScriptを作成する>
1javascriptyo.jpg

<エディターでプログラム入力>
 入力後保存してエディターを閉じます。
2editjavasdesune.jpg

<プログラムの反映1>
 右上の歯車マークにあるRESETをクリックしないと反映されません。
3resetscrptja.jpg

<プログラムの反映2>
 空のゲームオブジェクトを作り、それにD&Dするとプログラムが反映するようになります。
4danddgameobjdesu.jpg

<InputManagerで確認>
 プログラム内の、Jumpの意味の確認。
5jumpsapcedesunen.jpg

<ランさせてみる>
 当然何も起こりませんが、下のコンソール内に文章が表示されてます。
6consolewomiyo.jpg

<プログラムの意味>
 JavaScritptの内容は:

function Update () {
if(Input.GetButtonUp("Jump")){
Debug.Log("We Have Hit the Space Bar!");
}
}

 もしJumpボタンが離されたら、コンソール内に文を表示する

というようなことだと思います。Jumpボタンとはスペースバーのことですね。
 大切な基礎なのでしっかり憶えておかなくちゃ…。
 今日は、プログラムの結果はありません。何も起こりませんので
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 14:56| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月23日

Prefabの作り方 unity3D

 今日も、
 Unity3DStudent Beginner を勉強してみます。
 今日は:Beginner 03 - Prefabsです。
 意味は、そのまま「プレファブ」ですね。
 内容は:

 Prefabを作り、シーンに追加する

というものです。
 前々回のブログで作ったプログラムを使います。

<Prefabとは…>
 要するに、あるオブジェクトのクローンですね。Prefabを作る意味は、メモリーの節約、CPUへの負担軽減、プログラムの煩雑化防止、といったところでしょうか。

<Prefabを作る>
1prefabdukuridesu.jpg

<できたPrefabをシーンに追加>
2prefabnageru.jpg

 今日は簡単でした。ホッわーい(嬉しい顔)
------------------

ラベル:Unity3d
posted by Shindo Izo at 11:12| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月24日

Destroy 破壊(?) unity3D

 今日も、
 Unity3DStudent Beginner を勉強してみます。
 今日は:Beginner 04 - Destroying Objectsです。
 意味は、「オブジェクトを破壊する」になっちゃいますが、消去するって感じなのかな。
 内容は:

 スタートするとオブジェクトが消える

というものです。
 前回のブログで作ったプログラムを使います。
 (以後、JavaScriptの作成や保存などは毎度同じなので省きます)

<Destroy命令を使う1>
 Destroy(gameObject)
  スクリプトを追加したオブジェクトを破壊する

 JavaScriptを

function Start () {
Destroy(gameObject);
}

と打ち込み、CubeにD&Dする。ランすると、Cubeが消えている、というもの。

<Destroy 命令を使う2>
 Destroy(gameObject.Find("オブジェクト名"))
  括弧内のオブジェクトを発見したら破壊する

 JavaScriptを

function Start () {
Destroy(gameObject.Find("HaneagariHako"));
}

と打ち込む。ランするとHaneagariHakoが消えている、というもの。
 
<Destroy 命令を使う3>
 Destroy(gameObject.Find("オブジェクト名"),秒数)
  括弧内のオブジェクトを発見したら指定秒数後に破壊する

 JavaScriptを

function Start () {
Destroy(gameObject.Find("HaneagariHako"),3);
}

と打ち込む。ランすると3秒後にHaneagariHakoが消える、というもの。

<ちょっと遊んでみた>
 少し追加してみました。3秒後に自身を消去し、4秒後にHaneagariHakoを消去するというもの

function Start () {
Destroy(gameObject,3);
Destroy(gameObject.Find("HaneagariHako"),4);
}

 今日やったものもゲーム作成で必須の命令、って感じですね。撃たれた敵が消えるとか、当たったブロックが消えるとか、そういう時に使えそう。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 18:28| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月30日

インスタンス化 Instantiate unity3D

 超低レベルブロック崩しも完成(???)し、またUnity3D Student のBeginnerコースに戻りたいと思います。
 今日は05 Instantiate。辞書を引いても意味がよく分かりません。インスタンス化、ということらしいです。インスタンスとは、例とか事実とかいう意味のようですが、何だか意味が通じません。そのままインスタンス化としか言いようがないようです。
 前々回作ったPrefabを利用します。

<Javascript作成してPrefabをインスタンス化する>
1instantsuru.jpg

<Javascriptの内容>
 意味の分からないまま書いてます(笑)。Javascript名はCreator。

var thePrefab : GameObject;

function Start () {

var instance : GameObject = Instantiate(thePrefab,transform.position, transform.rotation);

}

<箱の回転>
 別にやらなくてもいいんですが、一応。
2objectkaiten.jpg

 で、一体どうなるかというと、同じように箱が出てきてコロンコロン転がるだけですがく〜(落胆した顔)
 要するにシーンに出没させるのが目的なのでしょう(多分)たらーっ(汗)
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 14:47| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年03月31日

タイマー Time.deltaTime unity3D

 Unity3D Student のBeginner06 です。簡単なタイマーの作り方、という内容です。Time.deletaTimeは経過時間が格納されるようです。

<タイマーを使う>
 5秒たったら、タイマーを止め、GAME OVERとデバッグログに表示するというもの。
1mytimerdesune.jpg

<Javascriptの内容>

var myTimer : float = 5.0;

function Update () {

if(myTimer >0){
myTimer -= Time.deltaTime;
}

if(myTimer <=0){
Debug.Log("GAME OVER");
}

}

 myTimerは残り時間(初期値=5.0)で、myTimerが0以上ならTime.deltaTime分引いていき、0以下になったらデバッグログに"GAME OVER"と表示せよ、って感じですかねぇ。

 これもゲームに必ず使いそうですね。時限爆弾とか、何秒以内に敵をやっつけないとゲームオーバーとか、何秒間かだけアイテムを表示してるとか、…。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

ラベル:Unity3d
posted by Shindo Izo at 21:10| Comment(0) | Unityのお勉強 | 更新情報をチェックする

2013年04月01日

物体を動かす transform.Translate unity3D

 Unity3D Student のBeginner07 です。transform.Translateコマンドを使ってオブジェクトを動かす、といった内容です。

<transform.Translateコマンド>
 スピード5でZ方向に飛んでいく、というもの。
1ugokuhakodesu.jpg

<Javascriptの内容>

var speed : float = 5.0;

function Update () {
transform.Translate(Vector3(0,0,speed)*Time.deltaTime);

}

<お遊び>
 進行方向が逆の箱を追加してみました。Javascriptは、ーをつけると反対に動きます。当たり前ですね。
2ugokuhakodesuka.jpg

------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

ラベル:Unity3d
posted by Shindo Izo at 16:53| Comment(0) | Unityのお勉強 | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。