2012年12月16日

Unity3D の練習01

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

で得た知識で、復習を兼ねて練習したいと思います。
 ほとんど同じですが、床を置き、ラケットの形を変え、色をつけてみました。ライトもスポットを上から当て雰囲気を出してみました。

<床を置く>
1yukadennen.jpg

<ボール、ラケットなどを置く>
 ラケットをシリンダーにしました。ライトは上からスポット。
2wakuballraketdesu.jpg

<スクリプトなどを追加>
 チュートリアルでやったこととほとんど同じですが、Colliderだけ変えてみました。
3boxcollidertuikada.jpg

<実行結果>

 Rigidbody,Physical Material,Input Managerなどが頭に入ってきません。また忘れそうですふらふら
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 21:35| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2012年12月18日

Unity3D の練習02

 前回作った、ラケットゲーム。ただ行ったり来たりでちっとも面白くありません。そこで、今までの知識を使って改良(改悪?)してみたいと思います。

<ラケットを前後にも動けるようにする>
 RacketControllerスクリプトに付け足します。
1rackettatescrptyo.jpg

<Z方向の縛りを解く>
 このチェックを外さないとスクリプトが機能しません。
2rigidzhoukoumo.jpg

<角にカーブをつける>
 ピンボール風に、角にカーブをつけます。論理演算ができないので、オブジェクトを数個組み合わせてカーブを作ります。数が多いのでPrefabにしました。
3guidewallmotoda.jpg

<ピンボール風にする>
 カーブをコピペして180度ひっくり返したものを反対側の角に設置。ピンボール直線ガイドも設置。
4guidewallhuyasunoda.jpg

 とりあえず、今日はこれでおしまい。たったこれだけでもボールの動きが楽しくなりましたわーい(嬉しい顔)。次回は、もうちょっとピンボール風を発展させてみたいと思っています。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 20:20| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2012年12月19日

Unity3D の練習03

 今日も少し改善(改悪?)してみました。

<釘やら箱やらを置く>
 ピンボールのようなパチンコ台のような、アバウトです。
1kugiwooitayo.jpg

 釘は最初丸かったのですが、何故かラケットがすり抜けてしまうので、縦長にしました。真ん中の箱は、パチンコの穴みたいなものをイメージしました。その穴に入ったらWin!、てな感じです。

<現在の問題点>
・ラケットとボールの当たりようによってボールが外に飛び出して(通過?)しまう。
・いつまでもはね回っているので緊迫感がない。

 簡単にできるかなぁ、なんて思っていましたが意外と難しく、頭を抱えています。さて、どうなることやら…
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 20:20| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2012年12月21日

Unity3D の練習04

 今日も少し改善(改悪?)してみました。

<台を丸ごと傾けてみた>
 適当に10°傾けてみたのですが、もっと傾けた方がそれっぽいです。
1pinballwotaosu.jpg

<重力を有効にする>
 Y方向の縛りを解かないと変な動きになってしまいます。重力も当然有効にしないとおかしくなってしまいます。ラケットも同じです。
2ballsibarihazusi.jpg

<スクリプトをいじる>
 ボールが斜め方向に投げ出す設定になっていたので、まっすぐにしました。しかし、台を傾けたのでこのスクリプトはいらないかも知れません。
3scripthenkou.jpg

<空のオブジェクトで蓋をする>
 何故か、ボールが飛び出したり、ラケットがすり抜けたりしてしまいます。色々試しても分からず、透明の蓋(Box Colliderだけ)をしてみました。が、少しましになった程度で相変わらず飛び出します。対策見えず。
4hutatukuri.jpg

<障害物を増やす>
 ピンボール風の障害物を適当に置いてみました。ラケットの裏側には穴をもうけて、すり抜ければ「ゲームオーバー!」です。
5Ookugitoka.jpg

<現在の問題点>
・ラケットとボールの当たりようによってボールが外に飛び出して(通過?)しまう。解決法みつからず。
・ゴールに入っても跳ね出していまい、ゴールに入った感じがしない。

 格好は良くなってきたんですが、相変わらずなんか面白くないです。得点は出ないし、危機感もないし、サウンドもなしで緊迫感がありません。
 でも、今の実力では無理ですもうやだ〜(悲しい顔)。いつかゲームにできたらいいなぁ…わーい(嬉しい顔)
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 21:39| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2012年12月24日

Unity3D の練習05

 今日も少し改善(改悪?)してみました。

<ゴールを少し下げた>
 4つのCubeを組み合わせて穴を作り、その下に底板を置きました。これで、ゴールに入ったボールは一段落ちるので出られなくなるはず…
1dainianaakeru.jpg

<釘を増やす>
 なかなかゴールに入ってくれないので、誘導の釘を置いてみましたが…
2kugihuyasita.jpg

<実行結果>
 マイピンボールver.0.01

 これで、「マイピンボール」の改良(改悪?)はやめます。得点を表示したり、サウンドを追加したり、ボールの数を増やしたりすると面白くなるかも知れませんが、今の実力ではどうやっていいのか分かりませんふらふら
 いつか、ゲームにできればいいんですが…わーい(嬉しい顔)たらーっ(汗)
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 17:55| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年03月25日

unity3D 練習2013.3.25

 今日は、今までの復習を兼ねてプログラムの練習をしてみます。
 ボールを転がして、当たったらオブジェクトが消える、という超簡単でつまらないものですがく〜(落胆した顔)

<オブジェクトの配置>
 玉3つとカプセル、円柱、直方体(床)を配置し、床以外にRigidbodyを付加します。動くボールには、マテリアルとして Bouncy を付加し跳ねるようにしました。
1objectnohaitidessei.jpg

<2つのスクリプトを作る>
1.動くボール用
 初速20.0で前進する、というもの。(2012.12.10のブログ参照)

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

2.破壊される側用(カプセルと円柱)
 UgokuBallに衝突したら2秒後に自身を消去する、というもの。(2013.3.20〜3.24のブログ参照)

function OnCollisionEnter(shoutotu : Collision){
if(shoutotu.gameObject.name == "UgokuBall"){
Destroy(gameObject,2);
}
}

 FPS(一人称視点シューティング)をほんの少しだけ意識してます。玉が当たって敵が倒れ消滅する、って感じで。ほど遠いですが…ふらふら
 何故か頭はゴロンゴロン…(笑)。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

posted by Shindo Izo at 21:37| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年03月26日

超低レベルブロック崩しを作る1 unity3D

 今までに出てきた命令だけで、超低レベルのブロック崩しを作ってみようと思います。超低レベルとは、クソゲーの中のクソゲーという意味です(笑)。

<オブジェクトの配置>
 床(Plane)、壁(Cube4つ)、ラケット(円柱)、ボール(Sphere)、太陽光(Directional light)、カメラの構成です。ボールにだけ、RigidbodyとPerfect Bounce(Physical Material)を付加しました。Perfect BounceはColliderのMaterialにD&DすればOKです。
1burokuzuset.jpg

<ボール用のスクリプトを作る>
 作ると言っても、前回に書いたスクリプトと同じようなものです。これをボールにD&Dします。

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

2ballscriptdesse.jpg

 とりあえず、枠組みは出来ました。後はブロックを置いてそれがパッと消えればOKなんですが、そううまく行きますかどうか…。途中で頓挫するかも知れませんわーい(嬉しい顔)たらーっ(汗)
  つづく…
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>

posted by Shindo Izo at 21:22| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年03月28日

超低レベルブロック崩しを作る2 unity3D

 超低レベルのブロック崩しを作る、つづきです。

<Colliderのチェンジ>
 これは、実に不思議なんですが、デフォルトのColliiderだとボールが高速になると物体を突き抜けてしまうんです。バグなのか、仕様なのかは分かりません。色々試した結果、以下の設定に落ち着きました。今のところ大丈夫のようです。
1colliderchangesa.jpg

<ブロックを配置>
 ブロック崩しの主人公(笑)登場!
2blockdestroy.jpg

<ブロックとラケットのJavascript付加>
 ラケットは四角じゃ面白くないし、円だとこれもダサイ。結局楕円形にしました。ラケットコントローラーとブロック消滅のスクリプトを作り、ラケットにもRigidbodyを付加し数値をいじりました。

1.ラケットコントローラー用スクリプト

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

2.ブロック消滅用スクリプト

function OnCollisionEnter(shoutotu : Collision){
if(shoutotu.gameObject.name == "Ball"){
Destroy(gameObject,0.1);
}
}

・↑0.1ってのは0.1秒後に消える、ということです。別になくてもいいんですが…
3racketcontrollerjanen.jpg

 あとはブロックを複製して並べればOK…、と思ったんですが、ここで大きな問題が…。それは、ラケットでの打ち返しようによってボールがとんでもなく高速になってしまうんです。ラケットで打ち返せない…。
 色々対策を考えましたが思いつきませんもうやだ〜(悲しい顔)
  つづく…
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 12:00| Comment(2) | Unity3Dの練習 | 更新情報をチェックする

2013年03月29日

超低レベルブロック崩しを作る3 unity3D

 超低レベルのブロック崩しを作る、つづきです。

<ブロックのPrefab化>
 いっぱい作るのでPrefab化しました。
1blockprefab.jpg

<ブロックを増やし、後ろの壁を除去>
 ブロックPrefabを横に5列縦に5列で25個配置。後ろに壁があると、何もしなくても安全で面白くないので間を開けて緊迫感を持たせました。床も外した方が面白いかな、と思いましたが…。
2blockhuyasi.jpg

<無限ループ防止と難易度緩和>
 たまにボールが平行に跳ね返り無限ループに入ってしまいます。それを防ぐ方法を色々考えましたが分かりませんでした。そこで、左右と上の壁をほんの少し傾けてみました。何とかボールが戻ってくるようです。
 後ろの壁を開けると、今度はメチャ難しくなってしまいました。あっという間にすり抜けてゲームオーバー。そこで、ブロックを並べてみましたらうまく行きました。
3backblock.jpg

<色づけ>
 ねずみ色ばかりなので、少し色をつけました。3D文字も入れてみました。サイン入りです(笑)。
4irodukedesunenn.jpg

<とりあえず完成>
 問題点(ラケットの当たり具合でボールが異常に速くなったり遅くなったりします)はあるものの、何とか形になりました。

 マイブロック崩し ←ただ今、プレイできません<(_ _)>
(一度ウィンドウをクリックしないと操作を受け付けない場合があります。その際はクリックしてください)

 得点も出ないし、次のステージもないし、つまらないゲームですが、unityで初めて完成したゲームですわーい(嬉しい顔)揺れるハート
 これにて「超低レベルのブロック崩しを作る」は終了します。また腕が上がったら改善してみたいと思っています。
------------------
 <ご注意>私自身が全くの初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 17:50| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月11日

簡単な自動車運転シミュレーターに挑戦1

 Unity3D…私には何だか難しく、無理かなぁ、と思います。でも、何か作りたいふらふら
 そこで、ネットで検索したら、こういうのがありました。



 Unity:Getting Started by Creating a Quick Game ということなので、超弩級ウルトラ初心者向けゲーム製作なのでしょう。
 これなら何とかなりそうなので、上記ビデオを見ながら簡単なドライブゲーム作成に挑戦したいと思います。

<舞台の配置>
 車が走る地面とビルの配置です。地面の大きさは、500×1×500にしました。ビルは適当に拡大して配置しました。

1Jimen.jpg

<自動車の作成>
 基本の形を組み合わせました。

2mycar.jpg

 色(Material)は適当です。
 つづく...
------------------
posted by Shindo Izo at 14:35| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月13日

簡単な自動車運転シミュレーターに挑戦2

 前回の続きです。

<自動車の作成2>
 1.ヘッドライトを二つ追加
 2.メインカメラを車の真後ろに持って行く
 3.それらをMy Carファルだの中に入れる。
 4.車の操作用スクリプトを書き、My Carにドロップ
1mycarraito.jpg

<スクリプトの内容>

var forwardSpeed : float = 30;
var turnSpeed : float = 2;

function Update () {
 var forwardMoveAmount = Input.GetAxis("Vertical")*forwardSpeed;
 var turnAmount = Input.GetAxis("Horizontal")*turnSpeed;
 
 transform.Rotate(0,turnAmount,0);
 
 transform.Rotate(0,turnAmount,0);
 
 rigidbody.AddRelativeForce(0,0,forwardMoveAmount);
 
}

<Rigidbodyを追加>
 My CarにRigidbodyを追加後、下図のように数値などを変更
2rigidbodymycarhe.jpg

<走らせてみると...>

3mycardrivingsa.jpg

 ビルを避けながら、走り回ることができました。ドリフト走行ができるのには驚き(ただテールが滑っているだけですが)。カウンターを当てることもできます。
 ただ、このままの設定だとメチャ運転をしても転びません。

<今後の発展...>
 「簡単な自動車運転シミュレーター」、これで終了です。
 最後に、自動車運転シミュレーターとしてもう少し面白く発展するとすればどんなことができるか考えてみました。

1.地形を作る
 山や草原、町並みなどを作ると雰囲気が良くなりそうです。道路を作るのもいいかもしれません。
2.車体をもう少しリアルにする
 今のものは、とりあえず作ったものなので、CGソフトなどでもう少し作り込んだものを使用すると楽しそうです
3.その他
 エンジン音、スピードメーター、ブレーキなどを装備するとますます面白くなりそうです。(その分とてつもなく難しくなりそうですが...がく〜(落胆した顔)
------------------
posted by Shindo Izo at 13:19| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月15日

簡単な自動車運転シミュレーターに挑戦U 1

 前回で、超初心者向けの「簡単な自動車運転シミュレーター」は終わりました。でも、何かもの足りません。自動車の挙動が少し変です。
 そこで、再び検索してみましたらこういうのがありました。

http://youtu.be/HLERWBhJBsM

 なるほど、こういう風に作ればいいのか...、と思いました。この動画はとってもいいんですが、いかんせん画質が荒く細かいところが分かりにくく、何度か繰り返して見る必要がありました。
 以下、その備忘録として記事にしておきたいと思います。

<新規プロジェクト作成>
 新規プロジェクト作成するときに、以下のパッケージを読み込んでおきます。
 Scripts.unityPackage
 Skyboxes.unityPackage
 Terrain Assets.unityPackage

<地形を作る>
1terraintukuru.jpg

<地形のテクスチャーを貼る>
 好きなものを貼ればいいと思います。
2terraindane.jpg

<車のボディを作る>
 Cubeを変形して、Rigidbodyを付加します。
3cardesune.jpg

<タイヤを作成します>
 ここは大変重要です。空のオブジェクトを作ってそれにホイールコライダーを付加します。
4wheelcol.jpg

<タイヤを4本設置する>
 WheelをCarにドロップ後、複製し前後左右に配置します。
5wheelcopy.jpg

 こんな便利なコライダーがあったんですね。
 ここまでで合っているのか心配ですが、今日はここまでにしておきます。
 つづく... 
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 18:43| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月16日

簡単な自動車運転シミュレーターに挑戦U 2

 前回の続きです。

<カーコントロール用のスクリプト作成&付加>
 JavaScriptを作成し、それをCarにドロップ。Car選択後、インスペクター内の変数に読み込みます。(右の丸点マークをクリックして選択)
1scritptpoine.jpg

<スクリプトの内容>

var WheelFR : WheelCollider;
var WheelFL : WheelCollider;
var WheelRR : WheelCollider;
var WheelRL : WheelCollider;

var Speed = 10;
var Breaking = 20;
var Turning = 20;

function Update () {
 WheelRR.motorTorque = Input.GetAxis("Vertical")*Speed;
 WheelRL.motorTorque = Input.GetAxis("Vertical")*Speed;
 
 WheelRL.brakeTorque = 0;
 WheelRR.brakeTorque = 0;
 
 WheelFL.steerAngle = Input.GetAxis("Horizontal")*Turning;
 WheelFR.steerAngle = Input.GetAxis("Horizontal")*Turning;
 
 if (Input.GetKey(KeyCode.Space)) {
  WheelRL.brakeTorque = Breaking;
  WheelRR.brakeTorque = Breaking;
  }
}

<カメラが車を追随するようにする>
 最初に読み込んでおいた、SmoothFollowスクリプトをMain Cameraにドロップ。CarをTargetにドロップ。
2smoothfollowcamera.jpg

<試運転>
 さて、うまく動きますように…。
 動きました! でも、ハンドルを切るとすぐにゴロンと転がってしまいます。そこで、少し、Carの数値を変えてみました。

 Drag 0.5
 Angular Drag 0.5
 Speed 15
 Breaking 25
 Turning 30

 大分スムーズに運転できるようになりました。でも、急ハンドルを切るとぶっ倒れます。当然ですが。
 下図は運転中のワンショットですが、ただ箱が斜めに静止しているだけに見えますね(笑)。
 動きは確かにリアルになりました。
3untennchuudesse.jpg

 ここで、ビデオは終わっています。一番最後の何だかいっぱいしゃべっているのは、多分ボディをどっかから持ってきて、Mesh Rendererをオフにすればいい、というようなことだと思います。英語が聞き取れないので、間違っているかも知れません。
 
 これで「簡単な自動車運転シミュレーターに挑戦U」はおしまいです。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 21:55| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月17日

マイ自動車運転シミュレーターに挑戦1

 前回完成した(?)「簡単な自動車運転シミュレーターに挑戦U」を改造(改悪?)して、自分流のドライブシミュレーターを目指してみたいと思います。と言っても、見た目ぐらいしかいじれないんですが...。

<車のボディを用意する>
 以前CGソフト(Wings3D)で作った車をUnity3Dで使います。(Unityのアセットストアーから無料のモデルをインポートする手もあります)
 私の場合、3D Studio(.3ds)で書き出しました。
1wings3dcarexp.jpg

<モデルファイルをUnity3Dへ>
 モデリングファイルをProjectウィンドウにドロップ。さらに、それをCarにドロップします。
2dedropne.jpg

<位置、大きさを微調整>
 位置や大きさをなるべく正確に合わせました。その時、ワイヤーフレームモードにしておくと分かりやすいです。
3wirechuusinsoroe.jpg

 とりあえず、ただの箱からマイカーになりました。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 15:19| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月18日

マイ自動車運転シミュレーターに挑戦2

 前回は、車のボディをくっつけました。今日は、道路を造りたいと思います。
 道路を造るのは大変なので、何かいいものはないかな、と探しましたら、アセットストアーにフリーの道路作成ツールがありましたので、それを使うことにします。
 フリーですのでほとんど機能制限されていますが、贅沢は言えませんね。道路は一種類しかありません。

<アセットストアーに行ってツールを検索>
 右上の検索欄に、「easyroads3d」と入力して表示させます。
1asseteasyroads.jpg

<インポートする>
 Importボタンを押すとダウンロードされます。
2easyroadsimportja.jpg

<EasyRoads3Dオブジェクトを作る>
 メニューのEasyRoads3Dをクリック、オブジェクトを作ります。
3easyroadsfoldasa.jpg

<ポイントを置いていく>
 Inspector欄の、+マークの付いたボタンをクリック。シフトキーを押しながら地形上をクリックし、適当にポイントを置いていき、最後に歯車のマークをクリック。
4pointplusja.jpg

<道幅と道路の開閉を選択>
 Road widthを好きな値にし、Closed Trackで道路を閉じるか開いたままにするか選択。(図は閉じるに選択)左の山のマークをクリックすると、Alertが表示されますがOKして閉じます。
 Alertの内容は「編集できません」という意味かと思いますがよく分かりません。
5pointcloseyo.jpg

<道路のレンダリング>
 Apply Splatmapのチェックを入れると、道路が出来上がっています。
6applysetting.jpg

<道路を試運転>
 さっそく車を走らせてみました。
7drivemyway.jpg

 以上は、試行錯誤でやったので、間違いがあるかも知れませんし、もっといい方法があるのかも知れません。
 また、色々なオプションがあるようですがイマイチよく分からずです、今のところ...。

 こういう道路を一から造ることを考えれば、ありがたいですね。直線はともかく、カーブはゾッとします。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 14:51| Comment(1) | Unity3Dの練習 | 更新情報をチェックする

2013年10月20日

マイ自動車運転シミュレーターに挑戦3

 道路が造れるようになったので、地形をもうちょっと格好良くしたいと思います。
 地形の凹凸を作り、植物や石をおいてみました。これが以外と大変。

<地形俯瞰図>
0Mydrivezone.jpg

<試運転記念写真1>
1MYdrivesan.jpg

<試運転記念写真2>
2MYdrivesan.jpg

<試運転記念写真3>
3MYdrivesan.jpg

 それなりに気持ちよく走ることができました。
 ただ、スピードを出しすぎてカーブを曲がろうとすると、ひっくり返ってしまいます。これは実際の運転では当たり前のことなんですが...。ちゃんとカーブの前で減速してすぐにフルスロットルが正しい運転ですね。
 車の安定には一工夫しました。コライダーをシャコタン状態にすればかなり安定しました。
 競争してくれる車があるともっと面白くなるのでしょうが、当分無理です。さていつになることやら...。

 これにて、

 マイ自動車運転シミュレーターに挑戦

は終了にします。

 もし地形の操作をご存じない方は、過去に書いたブログ記事をご参照下されば幸いです。最初から順を追っていただければ分かると思います。
------------------
posted by Shindo Izo at 22:19| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月23日

簡単なFPSゲームに挑戦1

 憧れのFPSゲームに挑戦してみたいなぁ、とネットを検索しましたら、

 http://youtu.be/5wxe1IUu5QA

というのがありました。これなら何とかなるかも知れません。でも、主人公がイモムシとは…ふらふら
 そこで、上の動画を参考にさせてもらって、自分なりに創作しながらトライしてみようと思い立ちました。
 途中であきらめることになるかも知れませんが、頑張ってみようと思います。

<新規プロジェクト作成>
 ScriptsとParticleパッケージを読み込んでおきました。

<ダサイ兵士を作る>
 バズーカ砲を抱えた兵士を作りました。Sphere,Capsule,Cylinderで引き延ばしたり回転したりして作りました。超ダサイです。もちろんアニメーションしません。
 FPSなのでボディとかはいらないんですが、作っておけばTPS(三人称視点)にいつでも変更できるのでそうしました。TPSでやりたい場合は、カメラを後ろに持って行き、Smooth Followスクリプト(StandardPackageの中にあります)をドロップすればOKです。
 それらをcapsule(Soldierとリネーム)の中に放り込み、MeshRenderのチェックを外しておきます。
 色はMaterialを作ってドロップ。バズーカ砲はBlack、顔と手はHadairo、帽子と軍服はGreenです。
 Soldiar選択状態で、メニュー>Componet>Phisics>Character Controller をクリック。
 で、ここがとっても重要なのですが、Soldierの中の部品はColliderを外しておかないとヘンテコな動きになってしまいます。(これにはほとほとまいりました。最初からギブアップかと思いました)外すとスムーズに動きました。
1heisidayo.jpg

<スクリプトをSoldierにドロップ>
 メインカメラを目線の位置に置き、Soldierにドロップ。スクリプトをドロップ。
2soldiergamendesu.jpg

<スクリプトの内容>
 これは、unityのサイト内のリファレンスをそのまんまコピーすればOKです。
 四角で囲んだ中のプログラムです。

 たったこれだけでも、主人公が動いたことは喜びですわーい(嬉しい顔)るんるん
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:FPS Unity3d
posted by Shindo Izo at 20:22| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月24日

簡単なFPSゲームに挑戦2

 続きです。

<弾丸を作る>
 Sphereで弾丸を作りバズーカ砲の前に置く。Prefab追加(Danganとリネーム)。SphereをPrefabにドロップ。Sphereは消去。
1prefabdangan.jpg

<弾丸の生成点を作る>
 Sphereを弾丸生成点に置く(spawnPointとリネーム)。Sphere ColliderとMesh Rendererのチェックを外す。
2spawnpointtukuru.jpg

<スクリプトの変更>
 前回作ったスクリプトの内容を変更します。

var speed : float = 3.0;
var rotateSpeed : float = 3.0;
var bulletPrefab : Transform;

function Update () {
 var controller : CharacterController = GetComponent(CharacterController);

 // Rotate around y - axis
 transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);

 // Move forward / backward
 var forward : Vector3 = transform.TransformDirection(Vector3.forward);
 var curSpeed : float = speed * Input.GetAxis ("Vertical");
 controller.SimpleMove(forward * curSpeed);

 //Dangan Hassha
 if(Input.GetButtonDown("Jump")) {
  var bullet = Instantiate(bulletPrefab, GameObject.Find("spawnPoint").transform.position, Quaternion.identity);
  bullet.rigidbody.AddForce(transform.forward*2000);
 }

}
@script RequireComponent(CharacterController)

<Dangan PrefabをBullet Prefabにドロップ>
3danganbullet.jpg

<Dangan PrefabにRigidbodyを追加>
 Dangan(弾丸)は少し大きめの方がいいようです。マテリアルはFire Smokeってのにしてみました。
4rigiddangan.jpg

<初撃ち>
 仮の壁を作って、それに撃ってみました。バズーカ砲がマシンガンのようになってます(笑)。
5jitudanhassha.jpg

 弾を撃ちながらそこら中をうろつくことができるようになりました。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d FPS
posted by Shindo Izo at 22:05| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月25日

簡単なFPSゲームに挑戦3

 続きです。
 今日は、ステージを作り、弾丸を消去するプログラムをくっつけます。

<ステージ作り>
 地面を広くして、壁を四方に、端に階段つきの台を置きました。すべてCubeで作ってます。
1stagekazari.jpg

<階段を上れるようにする>
 上の状態だと階段を上ることができません。Character ControllerのSlope Limitの数値を上げると上ることができるようになりました。
 Soldierを選択後、数値をいじります。私の場合、75でいいような感じでした。
2slopekakudosa.jpg

<弾丸を消す>
 前の状態だと撃った弾がいつまでも残っているので、それを消去するJavaScriptを作り、Danganにドロップしました。
3dangankesiscr.jpg

<台に向かって無駄撃ち>
 弾が1秒後に消えています。
4kaidansisha.jpg

 たったこれだけのステージでも、グンと雰囲気が出ました。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:FPS Unity3d
posted by Shindo Izo at 17:18| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2013年10月26日

簡単なFPSゲームに挑戦4

 続きです。
 今日は、敵を作ります。

<敵砲台作り>
 Capsule,Sylinderで大砲(機関銃?)を作りました。入れ子にするときに台座を中に入れないようにすると上だけ動き回るようになります。そして、上の部分にスクリプトをドロップしました。
1Taihoudesu.jpg

<スクリプトの内容>

var LookAtTarget : Transform;

function Update () {
 transform.LookAt(LookAtTarget);
}

<敵砲台のクローン作り>
 Project WindowでPrefabを作成。既存のEnemyをそれにドロップ。出来上がったPrefabをScene Windowにドロップ。
2enemyclone.jpg

<気づいたこと>
 これら一連の作業で、大変重要なことがありました。それはローカル座標とワールド座標、および何処を中心に持ってくるかによって結果がおかしくなっていくということです。
 敵砲台を作っていくときに、最初適当に作っていたらヘンテコな動きになってしまいました。
 重要な点は:

 1.オブジェクトを原点で操作する
 2.Z軸方向を前とする
 3.ローカル座標で操作し完成させる。
 4.出来上がったらワールド座標で目標地点に置く


だと思いました。

 敵が出てきて、雰囲気が出てきました。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:FPS Unity3d
posted by Shindo Izo at 14:45| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

広告


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

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

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