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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

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

4

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

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-VR
-, ,

Copyright© BUSINESS HACKER , 2020 All Rights Reserved Powered by AFFINGER5.