2014年04月02日

2台目のカメラ使用 unity3D

 自分用の覚え書きです。

 2台目のカメラがほしい場合があります。例えば:

 ・プレイヤーの居るマップを表示したい
 ・レーダーのようなものを表示したい
 ・車のバックミラーを表示したい

等。

<舞台設定>
 1.3つのCubeと一つのSphereを設置(敵と味方という設定)
 2.Add LayerでMikataTekiを作る
 3.それぞれのレイヤーをMikataTekiに設定
1Layersetteidesu.jpg

<2台目のカメラの設定>
 1.2台目のカメラを設置
 2.カメラを俯瞰にする
 3.Curling MaskをMikatatekiだけにする
 4.Viewport Rectで画面表示の位置と大きさ指定
 5.Depthで手前に表示するように設定
  数字が大きいほど上に表示される。図の場合、MainCameraが-1に設定されているのでデフォルト
2camerasetteidesu.jpg

<プレイ画面>
3raderhuu.jpg

 レイヤーを指定することによって必要なものだけ表示できます。デフォルトだと全部表示されます。
 上のカメラをPlayerにドロップすれば、プレイヤーの動きに追随して表示することができるはずです。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 13:48| Comment(0) | Unity3D マイマニュアル | 更新情報をチェックする

2014年04月28日

戦車ゲームが作りたい1

 戦車ゲームが作りたいと思っていますが…。

 何分スクリプトに自信がないので、ある程度の形にできるかどうか分かりませんがトライしてみたいと思います。(練習ですのでモデルなどは雑です)

 今日は、本体製作と前後左右に動くようにしてみたいと思います。

<戦車作成と動きのコントロール>
 1.地面の製作…テラインにチェックのテクスチャーを貼り、適当にモコモコさせました。(練習なので雑)
 2.胴体と頭と砲身の製作…設置後、それらのColliderを全て削除しました。(これも練習なので雑)
 3.Rigidbodyの追加…親にくっつけました。
 4.Box Colliderの追加…親にくっつけて適当に大きさを合わせました。
 5.スクリプトの追加…親にくっつけました。
 6.cameraを追跡させる…そのまま親に放り込むとガクガクするので、Standard AssetsのSmoothFollow.jsをくっつけました。
1sennshahontaisa.jpg

<スクリプト>

using UnityEngine;
using System.Collections;

public class TankController : MonoBehaviour {
public float  sokudo ; //前進速度
public float kaitenSokudo;//回転速度

void Update () {
  //前進
  float zenshin = Input.GetAxis("Vertical") * sokudo;
  transform.position += transform.forward * zenshin * Time.deltaTime;
  //回転
  float kaiten = Input.GetAxis("Horizontal") * kaitenSokudo;
  transform.Rotate(0, kaiten, 0);
  }
}

<プレイ結果>
 モコモコ道もモコモコと動いてリアルです。
2sennshaga.jpg

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

戦車ゲームが作りたい2

 前回では戦車がとりあえず動きました。これだけでも動き回れて楽しかったりしますが、ここからがややこしいです。
 戦車の頭が回転するということ、そして砲身が上下するということが絡んできます。

<頭の回転>
 戦車の頭を回転するためのスクリプトをくっつける。左右なので、qとeを割り当てました。


using UnityEngine;
using System.Collections;

public class HeadController : MonoBehaviour {
public float atamaKaitenSokudo;//頭回転速度

void FixedUpdate () {
  //頭回転
  if (Input.GetKey("q"))
  {
    transform.Rotate(0, -atamaKaitenSokudo,0);
  }
  if (Input.GetKey("e"))
  {
    transform.Rotate(0,atamaKaitenSokudo,0);
  }
}
}

<砲身の端を中心に回転させる>
 砲身の中心で回転すると変なことになってしまうので、EmptyObjectに入れ子にし、砲身をZ軸方向にずらしました。
 その時、大事なことはPivotボタンをオンにしておくことです。(Centerでは変なことになってしまいます)
1housindennen.jpg

<砲身のスクリプト>
 砲身のスクリプトを親にくっつけました。回転角の制限をもうけないとぐるぐる回しの大砲になってしまします(笑)。下10°、上60°に設定してみました。
 上下の動きをどのキーにするか迷いました。適当なものが見つかりませんので、rとfにしておきました。

using UnityEngine;
using System.Collections;

public class BarrelController : MonoBehaviour {

  public float houshinKaitenSokudo;//砲身回転速度
  private float kaitenKaku; //砲身角度

void Start ()
{
  kaitenKaku = 0.0f;
}
void FixedUpdate () {
  //砲身上下
  if (Input.GetKey("r"))
  {
    if (kaitenKaku >-60)
    {
      transform.Rotate(-houshinKaitenSokudo,0,0);
      kaitenKaku -= houshinKaitenSokudo;
    }
  }
  if (Input.GetKey("f"))
  {
    if (kaitenKaku < 10)
    {
      transform.Rotate(houshinKaitenSokudo,0,0);
      kaitenKaku += houshinKaitenSokudo;
    }
  }
}
}

<入れ子構造にする>
2barrelhousindesu.jpg

<プレイしてみると>
3sassousensha.jpg

 よく砲身をある方向に向けながら車体は回転し移動していくパフォーマンスを見ますが、そういうこともできました。「おお、戦車ぁ〜!」

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

2014年04月29日

戦車ゲームが作りたい... 3

 前回で戦車らしきものができあがりました。

 今日は弾丸の発射をやってみます。

<弾丸発射システム作成>
 1.砲身(Barrel)にスクリプト添付
 2.砲身の下にEmpty Object(SpawnPoint)を作り、砲身の前に置く
 3.Shpereで砲弾を作り、それをPrefab化
 4.砲弾をShotにドロップ
 5.SpawnPointをShot Spawnにドロップ
1hasshacontrolldesu.jpg

<スクリプト>

using UnityEngine;
using System.Collections;

public class HasshaController : MonoBehaviour {
public Rigidbody shot; //弾Prefab
public Transform shotSpawn; //弾発生ポイント
public float shotPower; //弾の勢い

void Update () {
//スペースバーで弾丸発射
if (Input.GetButtonDown("Jump"))
{
Rigidbody dangan = Instantiate(shot, shotSpawn.position, shotSpawn.rotation) as Rigidbody;
dangan.rigidbody.AddForce(shotSpawn.forward * shotPower);
}
}
}

<プレイすると>
 Cubeを重ねてタワーにし、それを戦車でぶっ壊したところ
2towerhassha.jpg

 「戦車走り回り弾撃ちごっこ」ができるようになりました。
 が、問題はここからなんですよねぇ。もっとスクリプトを勉強しないと...(汗)。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
posted by Shindo Izo at 20:12| Comment(0) | Unity3Dの練習 Part II | 更新情報をチェックする

2014年04月30日

戦車ゲームが作りたい... 4

 続きです。

 今日は敵を作り、プレイヤーを追いかけ回すようにしたいと思います。

<敵戦車作成>
 1.前回作った戦車を複製後、スクリプトを全部はずしました。
 2.新たに追いかけ回すスクリプト書き、親(EnemyTank)にくっつけました。
1enemysennshadesu.jpg

<スクリプト>

using UnityEngine;
using System.Collections;

public class EnemyTankController : MonoBehaviour {
  public Transform hyouteki; //標的
  public float sokudo;
  public float kaitenSokudo;

  void Update () {
    //回転
    Vector3 soutaiKakudo =  hyouteki.position - transform.position;
    Quaternion kaiten = Quaternion.LookRotation(soutaiKakudo);
    transform.rotation = Quaternion.Slerp(transform.rotation, kaiten, kaitenSokudo * Time.deltaTime);
    //移動
    transform.Translate (Vector3.forward * sokudo * Time.deltaTime);
  }
}
 (何故か急に、Tabが無視されるようになりました。しょうがないので、スペースに変換してます)

<プレイしてみると...>
 追いかけ回されてます...(汗)。
2oikakerarete.jpg

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

広告


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

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

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