アフィリエイト広告を利用しています

現在ははてなブログで投稿しています!

広告

posted by fanblog

2017年06月30日

【unity5】カメラ移動・回転 : 変数の解説

はじめに

この「はじめに」の見出し、
毎度お馴染みですね!(笑)

こっちの方が始めやすいんですよね…。
まぁ、僕の気分なので変わるかもですが(笑)


実は、父もブロガーでして。
色々アドバイス貰いながら、
このブログは成り立っています!

……今更ですが、更新遅くなって
すみません…。

やっとテストが終わったぁー。

…と思いきや、次の日また別の
試験がありましてー…。

今週は地獄でした……!

そんなこんなで、
今週は遅くなりました…。





気を取り直して、前回やったカメラの
操作についてプログラムを解説して
いきたいと思います!



解説と言っておりますが、
僕も分からない所が多々あります!

なので、経験者さん教えてください……!


分かるところは僕も全力を尽くして
解説しますので!



今回は、変数部分までやって
終わりにします。

あんまり長々とやっていても、見る気が
無くなるような気がしますので…。



それでは、どうぞ!


スポンサードリンク





カメラ制御 : 解説編

さてさて、前回でソースコードは
公開しましたが、いきなり解説から始めても

「はぁ?何言ってんだコイツ」

みたいな感じになると思うので、
またソースをバンとやりたいと思います!



それでは、バン!
//使うシステムの宣言(?)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//クラス
public class CameraController : MonoBehaviour {

 public Transform target;
 public float distance = 12.0f;
 public float xSpeed = 250.0f;
 public float ySpeed = 120.0f;
 public float yMinLimit = -45f;
 public float yMaxLimit = 85f;
 private float x = 0.0f;
 private float y = 0.0f;

 void Start () {
  var angles = transform.eulerAngles;
  x = angles.y;
  y = angles.x;
 }

 void Update () {
  if (target) {
   x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
   y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;

   y = ClampAngle(y, yMinLimit, yMaxLimit);

   var rotation = Quaternion.Euler(y, x, 0);
   var position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;

   transform.rotation = rotation;
   transform.position = position;
   }
 }

 static float ClampAngle (float angle, float min, float max) {
  if (angle < -360) { angle += 360; }
  if (angle > 360) { angle -= 360; }
  return Mathf.Clamp(angle, min, max);
 }
}


はい、前回と全く同じです!
コピペしたので!



うーん、それにしても変なところで
改行が入ってしまってますね。

何か改善する手立てはないでしょうか……。
また今度、模索ですね。
(スマホだからでしょうか...?)



そんな事は置いといてですね、
コード始めに記述してある
システム宣言ですが、あれは

「今からこんなシステムを使いますよ」

と、コンピュータに知らせてます。


最低限、あの3つは
入れておいた方が良いでしょう。

とは言っても、スクリプトを開けば
標準で記述済みだとは思うんですが(笑)



次は、クラスについてですね。


クラスとは、プログラム本体という
認識で良いでしょう。

スクリプトとは、

「プログラムを書く紙」

クラスは、

「スクリプトに書いてあるコードそのもの」

の事です。


うーん、この言い方だと語弊が
あるでしょうか……。

説明が難しいですね…。



まぁ、取り敢えずクラスの認識としては

「スクリプトに無ければならないもの」

といった感じでいいかと。

また良い説明の仕方があれば追記します!



クラスは、今のところ
public class クラス名 : MonoBehaviour { }


こんな感じで良いと思います。

変に解説しても意味が
分からないと思いますし…。

自分でも何を言ってるのか、
分からなくなりますし…。



それで、このクラスの中に、
この前書いた記事の変数やら関数やらを
入れていく事になるんです。


スクリプト>クラス>関数>処理(変数等)

といった感じでしょうか。

まぁ、その辺はまた
詳しい記事を書きたいと思います。





それでは、まず変数の説明からですね。


変数、もう大丈夫でしょうか?
もう一度確認したい方は、
こちらのunityでのプログラミング基礎知識 1
をご覧下さい。


変数を1つずつピックアップして解説していきます。


まず1つ目の
public Transform target;

ですが、「Transform」型が入ってますね?

これは基礎知識編では解説していません。


という訳でTransformの
説明をしていきます。

Transformとは、
  • 位置(position)
  • 回転(rotation)
  • 大きさ(scale)

のプロパティを扱っています。

オブジェクトの移動とかに
使えそうですね。

ここで無駄に説明しておくと、
もし型がGameObjectであれば
「Transform」という概念はありません。

ですから、もし

GameObject target;

このように、target は GameObjerct であるという
宣言ならば、少し工夫が要ります。

target.transform.position・・・

と、target の transform の中の position を扱え!
ってシステム言わなきゃいけないんですね。

ですが、ここでは target が Transform だと
言ってありますので、
target.position でいけます。





話を戻しますが、
public float distance = 12.0f;


これはカメラとプレイヤーとの距離です。

型は少数ですね。
distanceという名前で変数が作られてます。

初期値は12となっていて、
プレイヤーとカメラの距離が
12mという事です!

その次の
public float xSpeed = 250.0f;
public float ySpeed = 120.0f;


この2つですが、それぞれマウスを動かした時の
カメラが動く速さです。

縦に動く時、横に動く時速さを設定しています。
ここの変数を使ってスピードを調節したり出来ます。

public float yMinLimit = -45f;
public float yMaxLimit = 85f;


この2つでは縦方向に動く上限を設定しています。
360°クルクル回転しないようにですね。

private float x = 0.0f;
private float y = 0.0f;


これは、カメラの動きに関わります。
マウスの動きの取得や、取り出した値に
スピードを掛けたりと......

それが縦、横でそれぞれあるだけですね。

まぁ、後日に解説記事を出していくので
その時にでも詳しく解説していきます。



では、変数はこれで終わりですね。
今回はこれで終わりにします!

後は、雑談をお楽しみ下さい。

終わりに (雑談)

今回は変数のみだったので
簡単だったと思います。

ですが、おそらく次回から難しくなってくると
思いますが、その分しっかり解説していきます!



ところで、スマホでも見やすいように
文の改行を多くして見たんですがどうでしょう?

あとは、これも読みやすいように
スペースを多く取ってます。

まだ慣れませんねー。
これから頑張ります......。


それでは、この辺で。



スポンサードリンク







投稿コメント
* 気軽にコメントくださいー *

※ ブログに表示されるのは、主の承認が必要なので時間がかかります!
  コメントに気づかない場合もありますので、返信が遅れる場合も...

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/6424599
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
プロフィール
ピノまっちゃさんの画像
ピノまっちゃ
どうも、ピノまっちゃ(PinoMatcha)です!
ゲーム制作をちょこまか頑張ってる大学生で、プログラミングも独学です。
ですので実力は全然ですが、最善を尽くして頑張っております!

名前の由来はピノの抹茶味が好きだからじゃなくて、ピノと抹茶が好きだからです!


更新 : 不定期!
プロフィール
新着記事
最新のコメント
更新事項
2018/8/2 定期更新への変更の報告に追記しました。

2018/5/10 「続きを読む」機能の使い方がやっと分かりました。

2017/9/14 プレイヤーを動かす:関数の解説の一部を書き直しました。

2017/8/1 【unity5】カメラ移動・回転させる方法に多数の画像を追加しました。
カテゴリーアーカイブ
YouTubeチャンネル
Fantiaリンク
よければ応援お願いします!

Pixivアカウント
現在、調整中です…
×

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