カテゴリー別アーカイブ: Unity

unityチュートリアルSpaceShooterその3「攻撃」

標準

https://saitottammas.wordpress.com/2015/11/14/unity-spaceshooter1/

https://saitottammas.wordpress.com/2015/11/16/unity-spaceshooter2/

に続く第三弾

shot(弾)を作る。
1)画面上のPlayer(飛行艇)が邪魔になるので、インスペクターのPlayer前のチェックをはずして「非表示」にする。

2)Empty GameObjectを作成し(shift-CTRL-N?)、名前を「Bolt」に変更する。リセットして位置を原点に戻す。

3)新規にQuadを作り、名前を「VFX」に変更する。場所をリセットする。

4)このVFXをドラッグしてBoltの下(childとして)に持っていく。

5) シーンビューで見ると、Quadの向きがカメラに水平になっているので、x軸で90度回転し、上から見て表面が見えるようにする。

6) ダウンロードしたアセットのテクスチャフォルダから、レーザーオレンジの画像を出す。

7) 単にテクスチャをドラッグする方法もあるが、今回は、マテリアル作成をしてみる。マテリアルフォルダを選択しておいてから、ヒエラルキーのcreateメニューから、create new materialを選ぶ。

名前をFX Bolt Orangeに変更する。

8)マテリアルのインスペクターウィンドウで、アセットピッカー(右上)を使い、テクスチャを選ぶか、テクスチャフォルダから画像をインスペクターフィールドにドラッグする。

9) 作成したマテリアルを、シーンビューのQuadにドラッグする。

10) このままでは、画面上に黒い四角が見えているので 、Shaderの変更をする必要がある。

デフォルトのDiffuseというのは、色を表示するShaderなので、代わりに、Particle→additiveを選ぶ。これは黒を透明にし、白を強調してくれる。他にも、mobile→particle→additiveでも良い。

mobile Shaderは、モバイルゲームでなくても有効である。

11)さて、Boltには現在何のコンポーネントも付いていないが、衝突計算も必要なため、rigidコンポーネントとコライダコンポーネントが必要になる。

まず、Rigidコンポーネントを追加し、重力を非選択する。

12) VFXオブジェクトを確認すると、mesh コライダーが自動的に付いているが、これは不要なので、removeコンポーネントする。

親のBoltオブジェクトに戻り、カプセルコライダーを追加する。カプセルの軸をy軸でなく、z軸にして弾の向きに合わせる。サイズも合わせて、隙間のないようにする。(真上からみると、半径0.03あたり、高さ0.5あたりが良さそうである)

13)コライダーコンポーネント設定で、Triggerのチェックをオンにする。

14) c#スクリプトを追加し、Moverと名づけて編集する。

using UnityEngine;
using System.Collections;

public class Mover : MonoBehaviour
{
public float speed;

void Start ()
{
rigidbody.velocity = transform.forward * speed;
}
}

15)このBoltをヒエラルキーのPrefabsフォルダ(なければ作成する)にドラッグして、プレファブ化する。

16) 初期画面からBoltを削除し、ゲームプレイ中にこのプレファブをシーンにドラッグすると、まっすぐに飛んでいくBoltを確認できる。

ーーーーーーーーー

PlayerControllerに追加し、弾を撃てるようにする。

using UnityEngine;
using System.Collections;

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

public class PlayerController : MonoBehaviour
{
public float speed;
public float tilt;
public Boundary boundary;

public GameObject shot;
public Transform shotSpawn;
public float fireRate;

private float nextFire;

void Update ()
{
if (Input.GetButton(“Fire1”) && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
}
}

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

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

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

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

ーーーーーーー

 

 

 

 

 

 

 

 

あらためてBlender→Unity簡単ゲーム01

標準

1.Blenderでキャラクター作成

[実験]Rigfyは、ジェネレートした形でもUnityにもっていけるのか?
[結論]持っていけたが、ボーン構造がとても複雑!

2.Rigfyが大変。リムーブダブル、法線方向再計算などを試してから自動ウェイト。

↑うまくいかないときの参考に。

Rigwip

Rigfyがうまくつながったところ

Oculus DK2 とUnity 2016 開発

標準

2016になってOculusドライバーが変わったり、グラボのスペック上がったりでVR開発に再挑戦するにはいろいろメモしておく必要がありそう。

グラボ GTX 970以上。Xboxコントローラーを用意した。

これで初めてOculusの新ドライバーが動く。ただ、DK2なので、サポートしてないよメッセージは消えない(⌒-⌒; )

ーーーー

GameEngine用のOculus Packageを使う

unity5のバージョンで、ダウンロードするパッケージが違うので、ここはunity5.4.0b11 以上を使うこと前提で(2016/6/21現在)。unity 5.4.0b15を超えると、特別なプラグインが必要なくなるかもしれない。

https://developer.oculus.com/documentation/game-engines/latest/

上記ページの指示に従い、OVRPlugin for Unity1.3.2をダウンロードする。

その後、

1)Unityを終了する。
2) C:\Program Files\Unity\Editor\Data\VR\Unity を探す
3) そこのファイルを全て削除するDelete all contents of the directory.
4)OVRPlugin zipを解凍し、フォルダ 5.4\Unityを開き、全てのファイルをC:\Program Files\Unity\Editor\Data\VR\Unity フォルダに移動する

 

 

Blender→Unity→VRその3(MobileVR)

標準

Google VR SDK で簡単モバイルVR

参考書「UnrealEngine&Unityエンジニア養成読本」Software Design Plus

1.UnityちゃんCandyRockStarを利用して。。。

ダウンロード(Unityちゃんライセンスに同意する)
http://unity-chan.com/contents/news/crs-gearvr/

解凍したフォルダ「unitychan-crs-master」の中身をすべてコピーして、作成しようとしているUnityProjectフォルダにペースト。上書きを確認されたらすべてイエスでインストールする。

Assets→Scenes→Main(.unity)をダブルクリック

Playを開始する。

CandyRockStage

2.Google VR SDK for Unityのインポート

Google VR SDK for Unityの圧縮形式ファイルをダウンロードして展開する。
Unityのほうから、Assetsメニュー→インポートパッケージ→カスタムパッケージを選択し、上記Google VR SDK for Unityパッケージを指定する。

3.VRカメラに変更

Mainシーンのヒエラルキーウィンドウにある、Stage Directorのインスペクタ(プロパティ)をみる。Stage Directorスクリプトのうち、「Main Camera Rig Prefab」のところを、GvrMainに変更する。

そのままプレイすると、実行画面が2画面になるのがわかる。

ただし、カメラ位置が近すぎるので、GvrMainの場所を次のように変更する

Position X:0 y:0 z:0 → X:0 y:1 z:2
Rotation         → y:180

4.ビルドする

File→ビルドセッティングでiOSを選択する。最初は、モジュールがないと言われ、自動的にダウンロードが始まる。実行形式になっているので、ダブルクリックする。

もう一度ファイルメニューからビルドセッティングを読み直すと、今度はiOSに「プラットフォームを変更」できる。

ただし、ここから先はMacのXCodeでの作業(中断)


Androidへのビルド
Android SDKが必要 かわりに Android Studio v2.1を導入
Android Studioは途中で、7u67以上のJDKが必要と言われる。→8u91を導入。

一度Andoroid Studioのインストーラを中断し、JDKがインストールできたのを確認してからもう一度インストール起動。4GB近くある?
しかも、もう一度起動して、さらにコンポーネントを設定するようである。

ん~、それでもUnityからのandroidビルドが止まる~
参考
https://akira-watson.com/android/adt-windows.html#SDK

SDK マネージャーでAndroid4.4以上をいれる→Unityのビルド設定で、最初バージョンを4.4にする

Android-SDKは思いがけない場所に入っているので設定で、保存場所を変えるとよい

その後、エラー表示。
だいたい、これと同じ症状。
http://stackoverflow.com/questions/26856305/unity-failed-to-compile-resources-with-the-following-parameters

思い当たることとして、jdk1.7とjdk1.8の両方をいれていたので、思い切ってjdk1.7をアンインストール。

するとビルドの途中で、jdkフォルダの場所を聞いてくるので、jdk1.8フォルダを指定。うまくビルド完了した。

 

 

 

 

 

Blender→Unity→VRその2(Unityの空、海)

標準

・Unityでの水の設定(FXWaterProのアップグレード必要)
Environment→Waterで水を出したときピンクになってしまった場合

http://answers.unity3d.com/questions/1192325/pink-water.html

・空

新規マテリアルでSkybox6面を作成

シェーダーをSkybox/6 sidedに変える
(あるいは、Skybox/CubeMapを使う)
Asset StoreからWispy Skyなどの無料アセットを探す(か、テクスチャを自作する)