2014年01月07日

簡単な(幼稚な)ビジュアルノベル作ってみました

 アドベンチャーやRPGは絶望的なので、簡単なビジュアルノベルをunity3Dで作れないか探ってみました。
 何度か実験してみて、何とかそれ風になりました。スクリプトはダラダラと長いです。もっと簡潔な方法があるとは思いますが...。

<画像とテキストを用意する>
 画像は、ペイントソフトで描き、それをunityにD&Dして、Planeに貼り付けました。背景と男と女の3枚。男女はバックが透明に設定しています。
Ajikkenyama.jpg

BP1.png

CP2.png

 テキストは、unityのGUITextに直接書きました。
 それらをカメラから見て納得する位置に配置します。
 テキストの裏側には、半透明のPlaneを置き、読みやすくしました。

<ページスイッチ設置>
 Empty ObjectをPageSwitchと改名し、ページをコントロールするスクリプトをくっつけました。

 次ページ、前ページに行けるよう、GUI.Buttonを画面の左上隅に配置しました(スクリプト内)。Nextボタンをクリックするとページが進み、Previousボタンをクリックするとバックします。

1scriptkuttuke.jpg
※後の追記:上の図の矢印、絵と文章が逆になってました。m(_ _)m
<スクリプト>
//ページ数
var page = 0;
//テキスト
var textLine0 : GUIText;
var textLine1 : GUIText;
var textLine2 : GUIText;
var textLine3 : GUIText;
var textLine4 : GUIText;
var textLine5 : GUIText;
var textLine6 : GUIText;
//ピクチャー
var picset0 : GameObject;
var picset1 : GameObject;

function Start () {
  textLine0.enabled=false;
  textLine1.enabled=false;
  textLine2.enabled=false;
  textLine3.enabled=false;
  textLine4.enabled=false;
  textLine5.enabled=false;
  textLine6.enabled=false;
  
  picset0.active=false;
  picset1.active=false;
}

function Update () {
 
  //ページ限定
  if(page > 6) {
    page = 6; 
  }
  if(page < 0) {
    page = 0;
  }
  
    //ストーリー進行
    switch( page ) {
    case 0: //題名
      textLine0.enabled = true;
      textLine1.enabled = false;
    break;

    case 1: //ナレーション1
      textLine0.enabled = false;
      textLine1.enabled = true;
      textLine2.enabled = false;
      
      picset0.active = false;
    break;
    
    case 2: //女登場
      textLine1.enabled = false;
      textLine2.enabled = true;
      textLine3.enabled = false;
      
      picset0.active = true;
      picset1.active = false;
    break;
    
    case 3: //男登場
      textLine2.enabled = false;
      textLine3.enabled = true;
      textLine4.enabled = false;
      
      picset1.active = true;
    break;
    case 4: //男女同時発言
      textLine3.enabled = false;
      textLine4.enabled = true;
      textLine5.enabled = false;
    break;
    case 5: //ナレーション2
      textLine4.enabled = false;
      textLine5.enabled = true;
      textLine6.enabled = false;
    break;
    case 6: //おしまい
      textLine5.enabled = false;
      textLine6.enabled = true;
    break;

  }
}
//前ページ、次ページスイッチボタン
function OnGUI () {  
    if ( GUI.Button(Rect(0, 0, 80, 30), "Next>") ) {  
        page +=1;
    }
    if ( GUI.Button(Rect(0, 30, 80, 30), "<Previous") ) {  
      page -=1;
    }
}

<実行画面>
2noveljikkougamen.jpg

<ビジュアルノベルを作ってみて>
 もっと簡潔に、便利にする方法があるような気がしますが、ま、しょうがありません、私の実力です。
 GUITextは位置がコントロールし難いので、GUITextureの方がいいかも知れません。そのかわり、いちいちペイントソフトで書き直す手間があり、果たしてどちらがいいのか決めがたいです。
 何十ページにもなったらわけが分からなくなりそう(汗)。
 ゲームの中でストーリー展開したい時などに使えるのではないか、と思っていますが…。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 16:09| Comment(0) | Unity3Dの練習 | 更新情報をチェックする

2014年01月11日

unity HP のチュートリアル 1

 ずーっと迷っていたのですが、ついにUnity3.5から4.3に乗り換えました。全部英語なので、途中あたふたしましたが何とかインストール完了しました。
 心配していた、過去のゴミ(作ったゲームなど)がちゃんと動くかどうかですが、今のところ大丈夫のようです。
 操作は3.5からそんなに大きな変化はないように思いました。ホッ。

 本体とは関係ないのですが、付属のエディターのMonoDevelopがとても使いづらく感じました。前の方が良かったと思います。

 unityのHPを覗いてみたら、いつの間にかチュートリアルが大変充実しておりました。日本語の訳もついておりました。ちらちらと見てみますと、スクリプトはC#が主になっています。JavaScriptはソースコード参照のみです。
 そこで、今までJavaScriptしかやってないので、C#も少しずつ勉強してみようかと思い立ちました。
 チュートリアルは、スクリプトだけで47本もあるので、とてもファイトが湧きませんが、上の方に、Projectsというリンクをたどるとゲームを作りながら勉強できるようになっていますので、それをやってみたいと思います。

 3つあるうちの、見た目一番簡単そうな

 Project:Roll-a-Ball

というのをやってみようと思います。
 今日は、

 Introduction

を見ました。英語は分かりませんが、「こんなことやるよ〜」と言っているのでしょう(多分)。
 今日はこれでおしまい。 
------------------
ラベル:Unity3d
posted by Shindo Izo at 17:41| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月12日

unity HP のチュートリアル 2

 続きです。今日は、

 Setting up the game

を見ました。
 今までやったことと全く同じですので省きます。ただ、参考になったことが2,3ありました。

<ライティング>
 ライティングのことは全く知らないので勉強になりました。フィルライトとは補助光源のことだそうです。影を濃くし過ぎない意味合いだそう。今まで環境光で調整してましたが、こういう方法もあるということですね。
 メインライト:
1Mainlightdesu.jpg

 フィルライト:
2filllightdesse.jpg

<Transformの値操作>
 今まで、Transform操作は、左上のマークをクリックしてやってましたが、Inspector上でやった方が速いかも知れません。マウスを持って行くと、小さな三角が出るので、それを左右に動かすと簡単に移動、拡大などできます。
3itichouseizura.jpg

 今までやったことの復習、という感じでした。でも、上のようなちょっとしたことも勉強になるな、と思いました。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 12:58| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

unity HP のチュートリアル 3

 続きです。Project:Roll-a-Ballの

 Moving the Player

を見ました。

<プレーヤーを矢印キーで動かせるようにする>
 PlayerにRigidBodyとスクリプトを追加します。
 オブジェクト(この場合、Player)を選択して、Inspector内、一番下の Add Componetボタンを使うと便利です。
1scriptrigiddesse.jpg

<スクリプト(C#)の内容>
 全くチュートリアルビデオのままですが、最後のForceModeだけ付け足してます。ForceModeは4種類あります。Accelerationは重力無視で、加速するモードです。ビデオでは省略してましたが、勉強のために書いてみました。
 FixedUpdate() は物理的な場合はこれを使うように、とのことです。一定の間隔で参照されるそうです。

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;

void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

rigidbody.AddForce(movement * speed * Time.deltaTime,ForceMode.Acceleration);
}

}

<MonoDevelopエディター>
・便利なこと:
 やはりUnityと連携できるのがいいですね。コマンドを選択状態で、

 Ctrl+Shift+7

を押すと目当てのスクリプトリファレンスに飛べます。これはとっても便利です。

・不便なこと:
 注釈に日本語を入れたいのですが、全く受け付けません。どうしても入れたい場合、他のエディターで内容を書いてコピペするしかありません(コピペは大丈夫でした)。
 それと、ウィンドウを縮めたくても縮めることができないのには閉口ものです。YouTubeを見たり、Unityに戻ったり、他にも何かを起ち上げている時など不便です。縮める方法があるのかも知れませんが、今のところ分かりません。
 これらの2点が改善されれば実に有り難いのですが...。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 21:17| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

unity HP のチュートリアル 4

 続きです。Project:Roll-a-Ballの

 Moving the camera

を見ました。

<カメラにプレイヤーを追随させる>
 メインカメラにプレイヤーを追随するスクリプトをくっつけます。プレイヤーに入れ子にすると、ボールの回転に同期してぐるぐる回ってしまうのでしません。ボールのように転がらないものなら大丈夫のはずだと思います(多分)。
 LateUpdate () は、Update () と同じ意味合いなのですが、一番最後に行くようです。

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour 
{
public GameObject player;
private Vector3 offset;

// Use this for initialization
void Start () 
{
offset = transform.position;
}

// Update is called once per frame
void LateUpdate () 
{
transform.position = player.transform.position + offset;
}
}

 カメラがボール(プレイヤー)を追いかけて移動するようになりました。

<憶えておきたいカメラ設定>
 Main CameraのInspector内の設定で、Projectionと言うのがあるのですが、その設定を換えると映像の見え方が変わります。

 Perspective : 遠近法による…実際のカメラと同じ見え方
 Orthographic : 投影法による…2Dっぽくなる

 わざと2Dっぽく見せたい場合などに使えそう。
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 21:41| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月13日

unity HP のチュートリアル 5

 続きです。Project:Roll-a-Ballの

 Creating pick-up objects

を見ました。

<枠とオブジェクトの配置>
 プレイヤーが出られないよう枠を作ります(Cubeを引き延ばして四方に配置)。そしてプレイヤーが拾い上げるオブジェクト(Pickup : Cubeを3軸に対してそれぞれ45度ずつ回転したもの)を作ります。それに回転させるスクリプト(Rotater)をくっつけます。それをプレファブ化し、プレイヤーの周りに12こ配置します。
1pickupwallssa.jpg

<オブジェクト回転のスクリプト(C#)>

using UnityEngine;
using System.Collections;

public class Rotater : MonoBehaviour {

// Update is called once per frame
void Update () 
{
transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
}
}

 Vector3の括弧内の値は、上の通りやるときれいに回転してます。
 少し、ゲームっぽくなってきました。(かな?)
------------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 14:27| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

unity HP のチュートリアル 6

 続きです。Project:Roll-a-Ballの

 Collecting and Counting

を見ました。

<オブジェクトを消す>
 プレイヤーがオブジェクト(PickUp)に触れたら消えるようにします。
 PlayerController.csに文を追加し、PickUpプリファブにタグをつけます。そして、PickuUpのBox ColliderのIs Triggerにチェックをいれます。

<オブジェクトを消すスクリプト(C#)>
 PlayerController.csに付け足します。(緑字)

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;

void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

rigidbody.AddForce(movement * speed * Time.deltaTime,ForceMode.Acceleration);
}

void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "PickUp")
{
other.gameObject.SetActive(false);
}
}
}

<タグをつける>

 1.PickUpプリファブを選択。Inspector上部のTagを開いてAdd Tag...を選択。
1tag01.jpg

 2.Element 0 の空欄にPickUpと入力し、PickuUpプリファブを再選択。
2tag02.jpg

 3.Tagを開き、PickUpを選択
3tag03.jpg

<Rigidbodyの追加>
 PickUp Prefab にRigidbodyを追加し、Use GavityとIs Kinematicにチェックを入れます。
 何故PickUpにRigidbodyを追加するのか、動画を何度か見ましたがよく分かりませんでした。何となく聞き取れたことは、CPUに負荷をかけないためのようです。パーフォーマンスが落ちるのでしょう。ハッキリしたことは分かりません。
 とにかく、こういう場合はそうしなさい、ということなのでしょう。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 20:27| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月14日

unity HP のチュートリアル 7

 続きです。Project:Roll-a-Ballの

 Displaying text

を見ました。

<GUI Textを設置>
 プレイヤーが拾った数を示すカウンターと、全てのCubeを拾ったときに出る「YOU WIN!」というメッセージをGUI Textを使って表示するようにします。
 カウンターは左上に、Winメッセージは中央少し上に表示するように位置調整します。その時、Inspector内のPixel Offsetで微調整できます。

・カウンター
1guitextsa.jpg

・Winメッセージ
2guiwintextsa.jpg

<GUI Textを表示するスクリプト(C#)>
 PlayerController.csに付け足します。(緑字)

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour
{

public float speed;
public GUIText countText;
public GUIText winText;
public int count;

void Start ()
{
count = 0;
SetCountText ();
winText.text = "";
}

void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

rigidbody.AddForce(movement * speed * Time.deltaTime,ForceMode.Acceleration);
}

void OnTriggerEnter(Collider other)
{
if(other.gameObject.tag == "PickUp")
{
other.gameObject.SetActive(false);
count +=1;
SetCountText ();
}
}

void SetCountText ()
{
countText.text = "Count : " + count.ToString();
if(count >= 12)
{
winText.text = "YOU WIN!";
}
}
}

<GUI Textをドロップ>
 プレイヤーを選択後、それぞれの変数にGUI Textをドロップします。

3guiscriptplayersa.jpg

 これでゲーム完成のようですね!。あと1回講座が残ってます。もう少し、もう少し...たらーっ(汗)

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

-----------------
unity HP のチュートリアル 8
 Project:Roll-a-Ballの

 Publishing the game

を見ましたが、ゲームをスタンドアロンやWeb Player仕様にする方法は今までにやりましたし、ネット上にも沢山ありますので省略します。
------------------
ラベル:Unity3d
posted by Shindo Izo at 19:40| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月17日

マイマニュアル2 Unity3D(code:C#)

 自分用の備忘録です。(言語はC#)


  カメラがターゲットを追随させるようにする

--------------------------

オブジェクト(Player)を矢印キーで動かせるようにする(2Dロケット編)
 Playerの動ける範囲を限定するスクリプトも含まれる↑

  ライティングの基礎(3点ライティング

  弾(ミサイルなど)を発射するシステムを作る(弾作成)

  弾(ミサイルなど)を発射するシステムを作る2(発射システム)

  弾(ミサイルなど)を発射するシステムを作る3(弾消去)

  敵を作る(爆発)

---------------------
ラベル:Unity3d
posted by Shindo Izo at 11:45| Comment(0) | Unity3D マイマニュアル | 更新情報をチェックする

2014年01月21日

Unity マイプロダクト No.1

 Unity ホームページのチュートリアル(Roll-a-Ball)を終了しましたので、それらの知識を土台に、デスクトップ時計を製作してみました。 題して、

 Earth Clock

<製作の過程>
 幸い、時計製作のチュートリアルがありましたので、それを参考に(というか、おんぶにだっこ状態)しました。
 時刻文字と地球の回転は、Roll-a-Ballで使ったスクリプトをそのまま使用しました(数値などは変えてます)。こちらをご参照下さい。
 時刻のオブジェクトはCGソフト(Wings3D)で作り、それをUnityにドロップしました。時計の針、地球、背景はUnityの基本オブジェクトで作りました。

1aearthclockdukuridesu.jpg

 こちらから

 <ご注意>プログラムは自己責任で使って下さい。一切の責任は負えません。プログラミングど素人の製作ですので、その点ご理解下さいますようお願いします。<(_ _)>
-----------------
posted by Shindo Izo at 21:21| Comment(0) | Unity マイプロジェクト | 更新情報をチェックする

2014年01月22日

Unity HP のチュートリアル II 1

 Unity ホームページのチュートリアル Space Shooterをやってみようと思います。おなじみのスペースシューティングゲーム、楽しみです。
 今日は、

 Introduction
 Setting up the project

を見ました。Introductionは「こんなんですよぉ〜」といった内容ですので省略します。
 Setting up the project も今までやったことと同じようなものでしたが、復習を兼ねて書いてみます。

<新規プロジェクトを作る>
 Unityを起ち上げて、空っぽの新規プロジェクトを作ります。名前は、Space Shooter です。

<アセットをインポートする>
 Unity Asset Store に行って、チュートリアルのアセットをインポートします。
1assetimportsane.jpg

<ビルドセッティング>
 プラットフォームをStandaloneからWeb Playerに変更後、スクリーンを600×900にします。
2buildsetdesseSS.jpg

<シーンの保存>
3saveSSmaindesu.jpg
 
 これで準備完了ですね。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 22:37| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月23日

Unity HP のチュートリアル II 2

 続きです。
 今日は、

 The player gameobject

を見ました。

<Playerの設定>
 vehicle_playerShip をHierarchy にドロップ後、Playerとリネーム。Resetして原点に持って行きます。さらにRigidbodyを追加して、Use Gravityのチェックを外します。
 Capsule Colliderを追加。DirectionをZ-Axisにチェンジ、Colliderをボディに合わせます。
1Playersettingyo.jpg

<Mesh Colliderにチェンジ>
 何故かCapsule Colliderを削除。Mesh Colliderを追加し、Meshにplyaer_ship_colliderをドロップします。そして、Is Triggerのチェックも入れます(多分当たり判定に使うのだと思いますが...)
 英語でなんだかんだ言ってますがよく分かりません。推測ですが、色々なColliderが使えるよ〜、ってことだと思います(が、まちがっているかも知れません)
2colchangetomesh.jpg

<エンジンファイヤー設置>
 engines_player をPlayerにドロップ。
 以下は意味がよく分かりませんが、手順を書きます。
 上のGizmosボタンをクリック。3D Gizmos ボタンをスライドする。(3D Gizmosボタンをスライドすることによって何がどうなるのかよくわかりません)
3engineplayerdesu.jpg

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

2014年01月24日

Unity HP のチュートリアル II 3

 続きです。
 今回は、

 Camera and lighting

を見ました。

<カメラの設定>
 Main Camera選択後、Position(0,10,5),Rotation(90,0,0)に変更、Clear FlagsをSolid Colorに変更、Backgroundを黒に変更、ProjectionをOrthographicに変更、Sizeを10に変更します。
1camerasetdesse.jpg

<環境光を黒に変更>
 Render Settings内のAmbient Lightを真っ黒にします。
2renderwokuroni.jpg

<メインライト作成>
 Directional Lihtを作成後、Main lightにリネーム&リセット。TransformのRotationを(20,245,0)に、Intensityを0.75にします。
3mainlightnosettei.jpg

<フィルライト作成>
 Main lightを複製(Cntl+D)後、Fill lightとリネーム&リセット。Transform のRotationを(5,125,0)に変更、ColorのRGBを128,195,195に変更、Intensityを0.5にします。

<リムライト作成>
 Fill lightを複製後、Rim lightとリネーム&リセット。TransformのRotationを(345,65,0)に変更、Colorを真っ白に変更、Intensityを0.25にします。

<3つのライトをまとめる>
 Empty Objectを作成し、Lightingとリネーム&リセット。その中に上の3つのライトを入れ、Transform のPositionを(0,100,0)に変更します。
4Linghtingend.jpg

 照明のことは全く無知なので勉強になりました。フィルライトで影を補間、リムライトで影の部分の輪郭を出す、という感じでしょうか。ひとつひとつ消してみると、その役割がよく分かります。
 こちらのサイト様が参考になります。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 11:42| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

Unity HP のチュートリアル II 4

 続きです。
 今回は、

 Adding a background

を見ました。背景の作り方ですね。

<バックを作る>
 Quad を作成し、Backgroundとリネーム&リセット。Textureフォルダの中のtile_nebula_greendffをQuadにドロップします。
 Transform を Position 0,-10,0 Rotation 90,0,0 Scale 15,30,1 にします。
 ShaderをUnlit>Textureにセットします。
1quadunilitsa.jpg

<Quad とは>
 Quad は初めて見ました。調べると、背景や動画表示用のようです。Planeとの違いは、Planeは121の頂点があり、200の三角形で構成されているとのこと。Quadは、4つの頂点と2つの三角形だけだそうです。画像表示用ということなのでしょう(多分)。

<Unlitとは>
 これまた初めて見ました。Unlit>Textureで、ライティングの影響を受けずにテクスチャーを表示するそうです。Unlit>Transparentは透過OK、Unlit>Transparent Cutoutは濃淡画像を使って透過を調整できるオプションのようです。

 これは便利ですね。今まで、Planeにテクスチャーを貼り付けて、別にライトをあてがったりしてました。上の方法だと、CPU負担が軽い上に、ライティングを気にしなくて済みますね。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 20:44| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月25日

Unity HP のチュートリアル II 5

 続きです。
 今回は、

 Moving the player

を見ました。プレイヤーを動かすスクリプト作成ですね。でも、スクリプトは参考動画などを見てもよく分かりませんでした。ただ丸写ししているだけです。

<スクリプト追加>
 Playerを選択。Add CompornentからC#スクリプト作成、PlayerControllerとリネーム。スクリプトをホームページを見ながら書き(もしくはコピペ)保存して、Inspector上でそれぞれの数値を入力する。Sprictsフォルダを作り、その中にスクリプトを入れる。
1playermovesurunoda.jpg

<スクリプトの内容>
 
・矢印キーでPlayerが動くようにする

public class PlayerController : MonoBehaviour
{
public float speed; //動くスピード

void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

Vector3 movement = new Vector3 (moveHorizontal , 0.0f , moveVertical);
rigidbody.velocity = movement * speed;

}
}

・矢印キーで動ける範囲を限定する

[System.Serializable]
public class Boundary
{
public float xMin, xMax, zMin, zMax;
}

public class PlayerController : MonoBehaviour
{
public Boundary boundary;

void FixedUpdate ()
{
rigidbody.position = new Vector3
(
Mathf.Clamp (rigidbody.position.x , boundary.xMin , boundary.xMax),
0.0f,
Mathf.Clamp (rigidbody.position.z , boundary.zMin , boundary.zMax)
);
}
}

・機体を傾ける(Z軸回転)

public class PlayerController : MonoBehaviour
{
public float tilt;

void FixedUpdate ()
{
rigidbody.rotation = Quaternion.Euler (0.0f , 0.0f , rigidbody.velocity.x * -tilt);

}
}

<Serializableとは>
 インスペクタにサブプロパティを持つクラスを埋め込むことができる、ということのようです。サブプロパティというのは、インスペクタで変数を自由に変えられる欄のことだと思います。(多分)

 かっこよく宇宙を飛び回れるようになりましたぴかぴか(新しい)
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 21:29| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月26日

Unity HP のチュートリアル II 6

 続きです。
 今回は、

 Creating Shots

を見ました。Playerが発射する弾(ミサイル?)作成です。

<弾作成>
 1.Player選択後、Inspectorのチェックを外す(非アクティブ)
 2.Empty Object作成後、Boltとリネーム&リセット
 3.Quad作成後、VFXとリネーム&リセット。Boltの入れ子に。
 4.VFXのX軸Rotationを90に変更
 5.Materialフォルダ内のfx_bolt_orangeをVFXにドロップ。
  (ShaderがMobile/Particles/Additionalになっていることに注意)
 6.Mesh Collider削除
1shotmaterialdesu.jpg

<スクリプトを追加>
 1.Bolt選択
 2.Rigidbody追加
 3.Use Gravityのチェックを外す
 4.スクリプト追加し、Moverとリネーム(コードはunityHPにあります)
 5.Speedを20に設定
 6.Capsule Collider追加
 7.Is triggerのチェックを入れる
 8.Radiusを0.03、Heightを0.5位に設定。DirectionをZ-Axisに設定
2boltscriptdesu.jpg

<弾のPrefab化>
 BoltをPrefabsフォルダ内にドロップ
3boltprefabca.jpg

 Shaderは、Mobile/Particles/Additionalになってます。が、動画を見てもよく意味が分かりません。他にも沢山Shaderがありますが、ほとんど使い方は分かりません。(-_-;)
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 20:10| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月27日

Unity HP のチュートリアル II 7

 続きです。
 今回は、

 Shooting Shots

を見ました。Playerが弾を発射できるようにします。

<弾産み出し点を作る>
 1.Empty Objectを作り、Shot Spawnとリネーム&リセット後、Playerにドロップ
 2.Bolt PrefabをShot Spawnにドロップ
 3.Shot Spawnの位置をz=1.25に変更
1spawnpointdesu.jpg

<Playerのスクリプト加筆>
 unityHPにあるので省略

<産み出し点と弾を関連づける>
 1.Player選択
 2.Bolt PrefabをShotにドロップ
 3.Shot SpawnをShot Spawnにドロップ
 4.Fire Rate を0.25に設定
2playerscriptspawnsa.jpg

 これで、弾を自在に発射できるようになりました。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 18:41| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月28日

Unity HP のチュートリアル II 8

 続きです。
 今回は、

 Boundary

を見ました。発射された弾が画面の外に出たら消去するスクリプト作成です。

<弾の範囲を決める>
 1.Cube作成後、Boundaryとリネーム&リセット。
 2.Transform Positionをz=5に、Scaleをx=15,Z=20に設定
 3.Mesh Filter、Mesh Rendererを削除し、Box ColliderのIs Triggerにチェックを入れる
 4.Scriptを追加し、DestroyByBoundaryとリネーム
1boundarycubedesu.jpg

<弾を破壊するスクリプトを書く>
 unityHPにあるので省略します

 これで弾があふれかえることもなくなりました。

 それにしても、英語がほとんど聞き取れないので説明のほとんどは理解できていませんふらふらバッド(下向き矢印)
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 11:21| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

Unity HP のチュートリアル II 9

 続きです。
 今回は、

 Creating hazards

を見ました。回転するアステロイドの製作でした。

<アステロイドの製作>
 1.Empty GameObject作成後、Asteroidとリネーム&リセット。
 2.Modelsフォルダ内のprop_asteroid_01をAsteroidにドロップ&リセット。
 3.AsteroidのTransform Positionをz=8に変更
 4.Rigidbodyを追加
 5.Angular Drag を0に変更
 6.Use Gravityのチェックを外す
 7.Capsule Colliderを追加
 8.Radius,Directionをアステロイドの大きさに合わせる
1asteroiddengana.jpg

<アステロイド回転スクリプト追加>
 1.Asteroid選択
 2.New Script追加して、RandomRotatorとリネーム
       (スクリプトはunityHPにあります)
 3.Tumble の値を5に変更
Srandomrotatordesu.jpg

<Boundaryにtagをつける>
 1.Boundary選択
 2.TagにBoundary追加後、設定
Q2baundarytagsa.jpg

<アステロイドに破壊スクリプト追加>
 1.Asteroid選択
 2.New Script追加後、DestroyByContactとリネーム
       (スクリプトはunityHPにあります) 
Rasteroidscriptne.jpg

 アステロイドと一騎打ちができるようになりました。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 20:36| Comment(0) | Unityのお勉強 Part II | 更新情報をチェックする

2014年01月29日

Unity HP のチュートリアル II 10

 続きです。
 今回は、

 Explosions

を見ました。アステロイドとプレイヤーの爆発、アステロイドの移動のスクリプト追加でした。

<爆発のためにスクリプト加筆>
 1.Asteroid選択
 2.DestroyByContactをEdit Scriptする
   (スクリプトはunityHPにあります)
 3.wxplosion_asteroidをExplosionに、explosion_playerをPlayerExplosionにそれぞれドロップ
1asteroidexplosionsa.jpg

<PlayerにTagをつける>
 1.Player選択
 2.TagをPlayerにチェンジ
2playertagdesse.jpg

<アステロイドに移動スクリプト追加>
 1.Asteroid選択
 2.Mover.csを追加
 3.Speedを-5に変更
3Basteroidmoverhuka.jpg

 プレイヤーの発射した弾が当たるとアステロイドが爆発するようになりました。プレイヤーとぶつかると両方爆発するようになりました。そして、アステロイドがプレイヤー方向に向かってくるようになりました。

<AsteroidをPrefab化>
 1.AsteroidをPrefabsフォルダにドロップ
 2.Hierarchy内のAsteroidを消去

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

広告


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

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

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