VR

VRをunityで作ってみた入門編(1)

スポンサーリンク

Youtube上にunityの教材が落ちていたので、プログラミング初心者の私が、unityとvisual StudioでVRを作ってみました。

下記の動画の1から5話の部分に相当します。

最初からC言語を思いっきり使っている動画でしたが、コードは画面上で示してくれたので基本書き写せば大丈夫でした。

一部2019年版のvisual Studioに修正したコードを一緒に張り付けておきます。

動画は2017年版を使用しているので、表現方法が異なっており、同じ記述ではエラーが出てしまいました。

言語を使用する場面は、コントローラー操作接敵時の反応オートの敵の動きというゲーム上での物理法則以外の動作を表現するときに使っているようです。

そもそもunityに重力などの物理法則が組み込まれて、クリックだけで実装できてしまうことに感動しました。

一番時間がかかった部分はvisual Studioとunityの連動で、unityがうまくvisual Studioを読み込まず、試行錯誤しました。

結局、両ソフトをアンストールして再度設定しなおすことで直りました。

unityのダウンロード画面も変更されているので、動画とは異なる部分が多々あります。

visual Studioをきちんとダウンロードするために、個人で、かつ、以前unityを使ったことがある人という分類を選びなおしました。

ダウンロード後、unityで連携設定を行わなければいけないのですが、edit→
preferences→External Script Editorと進み、Visual Studio 2019に設定してください。

私はここでVisual Studioインストーラーを設定してしまい3時間ほど無駄にしました。

インストーラーはきちんと展開して、Visual Studio 2019してから入れましょう。

参考までに実際に動いたコードを下記に張り付けておきます。

プレイヤーをコントローラーで動かす処理(入門動画2)

using UnityEngine;

public class PlayerController : MonoBehaviour
{
private void FixedUpdate()
{
//Rigidbodyを取得
Rigidbody rigidbody = GetComponent<Rigidbody>();

//方向キーの入力
float x = Input.GetAxis("Horizontal"); //横軸
float z = Input.GetAxis("Vertical"); //縦軸

//ベクトルに変換
UnityEngine.Vector3 vec = new UnityEngine.Vector3(x, 0, z);

//力を加える
rigidbody.AddForce(vec);
}
}

敵を吹き飛ばす処理(入門動画4)

using UnityEngine;

public class PlayerController : MonoBehaviour

{
public float speed = 10;
public float blowSpeed = 1000;

private void FixedUpdate()
{
//Rigidbodyを取得
Rigidbody rigidbody = GetComponent<Rigidbody>();

//方向キーの入力
float x = Input.GetAxis("Horizontal"); //横軸
float z = Input.GetAxis("Vertical"); //縦軸

//ベクトルに変換
UnityEngine.Vector3 vec = new UnityEngine.Vector3(x, 0, z);

vec = vec * speed;

//力を加える
rigidbody.AddForce(vec);
}

//衝突したときに呼ばれる処理
private void OnCollisionEnter(Collision collision)
{
//Enemyと衝突したか?
if (collision.gameObject.CompareTag("Enemy"))
{
//衝突情報を取得
ContactPoint contact = collision.contacts[0];

//プレイヤーを吹き飛ばす処理
Rigidbody rigidbody = GetComponent<Rigidbody>();
rigidbody.AddForce(contact.normal * blowSpeed);
}

}

オブジェクトに運動させる場合の処理(入門動画5)

using UnityEngine;
using UnityEngine.EventSystems;

public class EnemyController : MonoBehaviour
{
public float moveSpeed = 1.0f; //移動速度
public float moveDuration = 1.0f; //動作の継続時間
public int moveDirection = 0; //移動方向 0…左 1…右

float moveElapsedTime = 0; //動作経過時間

//更新処理
void Update()
{
//動作開始からの経過時間を測定
moveElapsedTime = moveElapsedTime + Time.deltaTime;

//継続時間終了
if (moveElapsedTime >= moveDuration)
{
//移動方向を切り替え
//左→右
if(moveDirection == 0)
{
moveDirection = 1;
}
//右→左
else if (moveDirection == 1 )
{
moveDirection = 0;
}
//経過時間をリセット
moveElapsedTime = 0;
}

//左に移動
if(moveDirection == 0)
{
this.transform.position += new Vector3(-moveSpeed, 0, 0) * Time.deltaTime;
}

//右に移動
else
{
this.transform.position += new Vector3(moveSpeed, 0, 0) * Time.deltaTime;

}
}
}

では、素晴らしいVRライフをお楽しみください。

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.