Unity 資料
カメラについて
カメラを使う方法
- Asset Store から既成品カメラをインポートする
- 自分でカメラをコーディングしてみる
既成品カメラのインポート
- [Window] → [Asset Store]
- "Standard Assets" を DL & インポート
- Assets/Standard_Assets/Cameras/Prefabへ移動
- 〇〇.prefab を 左の領域にドラッグ&ドロップ
※prefab とは
ゲームオブジェクトの複製
prefab 化すると同じオブジェクトを使い回すことができる
prefab がクラスでそのインスタンスを複数生成するイメージ
Standard Assets のカメラ
-
FreeLockCameraRig
- マウス操作でカメラの視点を移動
- プレイヤーが操作するオブジェクトにも追従する
- HandheldCamera
- 追従 + 手ブレ再現
※プレイヤーが操作するオブジェクトであることを明示するにはタグを"Player"にする
自分でカメラをコーディングする
-
[Create] → "Camera" を選択
- このままではカメラの視点は固定
- Playerに追従して動くカメラを作る
public class FollowPlayer : MonoBehaviour
{
public Transform target; // ターゲットへの参照
private Vector3 offset; // 相対座標
void Start()
{
//自分自身とtargetとの相対距離を求める
offset = GetComponent<Transform>().position - target.position;
}
void Update()
{
// 自分自身の座標に、targetの座標に相対座標を足した値を設定する
// 後ろを飛んでいるドローンみたいに追従する
GetComponent<Transform>().position = target.position + offset;
}
}
シーンについて
シーン
- 画面遷移に使う (暗転で区切られるゲーム画面)
- タイトル画面 → ゲーム画面
- ステージ 1 → ステージ 2
- Unity ではシーン毎に .unity ファイルを編集
- シーンの遷移はコーディングによって行う
シーンの遷移
ex) タイトル画面からゲーム画面(Mainシーン)への遷移
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Start : MonoBehaviour {
public void ClickStart(){
SceneManager.LoadScene("Main");
}
}
- SceneManager.LoadScene() 関数で遷移
- UnityEngine.SceneManagement を using する
- この関数をボタン押下イベントと組み合わせたりして使う
オブジェクトの制御について
プレイヤーが動かせる
オブジェクトを作る方法
- AssetStoreから既製品キャラクターを持ってくる
- 自分でコーディングしてみる
既製品キャラクターをインポート
- Assets/StandardAssets/ Characters/ThirdPersonCharacter/Prefab
- ThirdPersonControllerをインポート
これだけで人っぽく動くキャラクターを用意できる
中のスクリプトを見ると結構勉強になる
自分で操作できる
オブジェクトを作ってみる
簡単のために四角い箱を動かしてみます
自分で操作できる
オブジェクトを作ってみる
- [Create] → "Cube"
- Add Component → Physics → Rigidbody
- Add Component → New Script
Rigidbody ・・・ 剛体; 力を加えられる物体として認識される
public class MoveCube : MonoBehaviour
{
float speed = 10;
//Updateはフレームごとに呼ばれる
//FixedUpdateは動くたびに呼ばれる
void FixedUpdate()
{
// ここで右1左-1上1下-1を検知
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Rigidbody rigidbody = GetComponent<Rigidbody>();
// x軸(横)とz軸(奥)に力を加える
rigidbody.AddForce(x * speed, 0, z * speed);
}
}
スクリプト例
A, ← -1
D, → +1
W, ↑ -1
S, ↓ +1
x z
Unity
By shoki
Unity
- 449