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

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

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2020年03月17日

【Unity】ViewportPointToRay()とはなんなのか

ViewportPointToRay() とは


ViewportPointToRay()とは、正規化されたビューポート座標を

もとにRayを計算する関数です。


説明終わり。



分かる訳がない


公式リファレンスにはそんな感じで記述されていますが、


正直、何がなんだか分かりません。


まずビューポート座標が曖昧です...。


そこから知る必要がありそうです。


ビューポート座標


調べてみましたが、どうやらUnity専用の用語?っぽいです。


複数の画面解像度画面の大きさでの利用を想定したときに、


カメラの視界を基準にした座標系らしいです。


カメラ左下の座標が(0, 0)、右上が(1, 1)となるようです。
ビューポート座標.png

なので、画面中央を指定する場合のビューポート座標は(0.5, 0.5)となります。


結論、ViewportPointToRay() とは


画面左下の座標を(0, 0)、右上を(1, 1)としたときの


座標に合わせて、その座標からRayを計算する関数だということです。



使用例 画面中央からRayを飛ばしてみる


void Update () {
 RaycastHit hit;
 var ray = Camera.main.ViewportPointToRay(new Vector2(0.5f, 0.5f));
 if (Physics.Raycast(ray, out hit)) {
  // ray処理
 }
}





以上です!


閲覧ありがとうございました。

2017年06月26日

unityでのプログラミング基礎知識 4

はじめに

今回は、制御構文をやっていきたいと思います。
たぶんこの記事で基礎知識編は最後となります。

次回からは、本格的にゲーム開発に取り組んでいきたいと思います。
ARPGですね。

そういえば皆さん、ARPGとは何か知ってますか?
アクションロールプレイングゲームの略で、コンピュータゲームのジャンルの1つです。

wikiによると、アクションゲームの要素とロールプレイングゲーム(RPG)の要素とアドベンチャーゲームの要素を併せ持ったものを指す、との事です。

話が逸れましたが、それでは基礎知識編最後である制御構文をやっていきたいと思います!

スポンサードリンク




if構文

はじめはif構文をやります!

if構文とは、2つの分岐に使います。
これが成立したら実行する、みたいなものですね。

if構文は、このように記述します。
if (条件) { 実行処理; }

カッコの中の条件を検査し、その条件が成り立つなら鍵カッコの中を実行します。

もっと精密に言うと、条件がtrueを返すならです。
今は難しいと思うので、「へぇー」程度に思っておいて下さい(笑)

簡単なサンプル出しますね。
int count = 0; //変数を作る

void Update () { //呼ばれ続ける
 if (count < 100) { //countが100未満なら実行
  count += 1; //countに1を足す
 }
}

こんなサンプルにしてみました。

1番初めの変数は、もう大丈夫ですよね。
int(整数)型のcountという名の入れ物です。

次は、関数です。
Update関数は、ゲーム中ずっと呼ばれ続けます。
常に更新されている訳ですね。

いよいよif構文ですが、カッコの中が条件となりますので、count変数が100未満だったらという条件です。

皆さん習ったと思いますが、「未満」は100を含みません
大事ですよ、含みません

という事は、99まではcount変数に1を足す処理をするという事です。
ですので、結果はちょうど100になるのです。

もしこれが、
if (count <= 100) {
 ・・・・・・
}

のように、100以下ならであれば、100を含みますので、結果は101となります。

こんな感じで、書き方は沢山あるんですよね。
ちなみに、< を > にすると、count変数が100より大きいならになりますよ。

それともう1つ、
if (条件) {
 ・・・・・・;
} else {
 ・・・・・・;
}

のようにelseを入れて{ }をつけると、成り立たなかった時の処理を書けます!

switch構文

次はswitch構文です。
これは、3つ以上の分岐で使います。

例えば、じゃんけんなどで相手の手によって出す手を変える、と言う様な処理に使えます。
ただのインチキですね(笑)

とまぁ、こんな感じですが3つ以上の分岐なので4つでも6つでもいい訳です。

書き方としては、
switch (調べるもの) {
 case 場合1 :
  ・・・実行処理・・・;
  break;
 case 場合2 :
  ・・・実行処理・・・;
  break;
 case 場合3 :
  ・・・実行処理・・・;
  break;
   ・
   ・
   ・
}

こんな感じです。

これで、調べるものの状態によって処理を変えることが出来ます。
どうやって処理を変えるかと言うと、caseの部分です。

caseの後に条件を記述しておいて、調べるものが、いずれかのcaseに当てはまっていれば処理を実行します。

この時に気を付けなければならないのが、caseの後には必ずbreakを付ける!という事です。

このbreakというのは、処理を抜け出すという意味を持ちます。

そのため、このbreak処理がないとエラー吐きます!
気を付けて下さいね!

それで、処理はcaseとbreakの間に書くようにして下さい。
ちょっと上のサンプルじゃ分かりにくいですよね。
簡潔にします。
switch () {
 case 場合1 :
  ・・・実行処理・・・;
  break;
}
 

処理を1つにしました。

ちゃんと実行処理がcaseとbreakの間に入っていますよね。
これできちんと動作します。

スクリーンショットでも載せれれば良いのですが、今スマホで記事を書いてるので勘弁して下さい……!

ではでは、毎度お馴染みのサンプルを。
int count = 0;

void Update () {
 switch (count) {
  case 1:
   Debug.Log("数字は1");
   break;
  case 2:
   Debug.Log("数字は2");
   break;
 }
}

こんな感じで書いてみました!

2017/6/28 追記 :
記述が間違ってました。
case :1、case :2 となっていたのを
case 1:、case 2: に訂正しました。
追記終わり


これは、count変数によって処理がありますね。
この処理の中のDebug.Logって知っていますか?

これは、unity側のコンソールタブにメッセージを送ります。
コンソールタブが分からない!という方は、こちらの記事で画面の説明をしていますのでご覧下さい。
unityの画面説明

countが1の時はコンソールに"数字は1"と送り、countが2の時は"数字は2"と送るといった具合です。

それでは、サンプルの説明が一段落ついた所で、終わりにしたいと思います。

最後に

これで、プログラミングの基本は紹介しましたが、もちろんこれが全てではありません!

マニュアルとかを見ていただければ分かると思いますが、膨大に処理があります!
これまでに紹介したものはその中のほんの1部に過ぎません!

ですが、これから作っていく中で新しい処理を使ったりする事があれば随時、解説していきますのでご安心を!

それでは皆さん、また次回まで!




【スポンサードリンク】








2017年06月24日

unityでのプログラミング基礎知識 3

計算について

unityの計算は、少し特殊です。
プログラミング特有の記号が使われたりします。

特有の記号ゆえか、とてつもなく計算がややこしいです……。
まぁ、書き方次第で楽になるはなるんですがね。

(思ったけど、特有の記号なのだろうか……。
 まだ習っていないだけではないのだろうか…)

ここでは、2つともご紹介、解説をしていきたいと思います。





計算の表し方 1

まずは簡単な方から解説していきたいと思います。
ですが、よく考えて理解すると、算数の計算と変わりません(笑)

取り敢えずサンプルを出すと、
//変数宣言
int v1 = 10; //初期値として値を入れる
int v2 = 20;
int v3 = 30;
int v4 = 40;

void Start () { //ゲーム開始直後のみ呼ばれる
 v1 = v1 + 5; //v1 には 15 が入る
 v2 = v2 - 3; //v2 には 17 入る
 v3 = v3 * 8; //v3 には 240 が入る
 v4 = v4 / 5; //v4 には 8 が入る
}

と、この様に式が作られる訳ですね。

……と言っても分かる訳無いですね(笑)
それでは、順に解説していきます!

まず頭に入れて置いて欲しいのが、「*」と「/」です。
これらはそれぞれ、掛ける割るの事です。

これが頭に入っていれば、勘の良い方は分かるでしょうか?
分かってしまえば、それまでですね(笑)

それで、まずはじめの変数宣言はもう大丈夫ですよね?
変数の型 変数名;ですよ!

サンプルに合わせて説明しますと、変数の型は今回は全て整数が入るint型です。
そして、変数名はv1やv2の事ですね。

今回の変数宣言には、「初期値」が入っています。
これは初めてですよね?

初期値というのは、文字通りで、変数に初めから値を入れておけます。
書き方は、以下の通りです。
変数の型 変数名 = 初期値;

今までに使ってきた変数宣言にイコールと初期値となる値を追記するだけですね!
簡単です。

なかなか本題に入れませんでしたが、いよいよやっていきます!
という訳でサンプルの1部を抜粋します。
v1 = v1 + 5;

の1文を持ってきました。

この文を噛み砕くと、v1には10が初期値で入っていますので、
 10 = 10 + 5;
という良く分からない式が出来上がりますね!

もちろん、これではダメなので改変します。
 v1 = 10 + 5;
これでだいぶ分かり易くなったのではないでしょうか!

これで、サンプルにあるコメント、v1には15が入るがどういう意味なのか分かりました!

意外と単純でしょう、そうでしょう。
他のも同じでように式を組み立てる事ができます。

v2 = v2 - 3; は v2 = 20 - 3; となります。
v3 = v3 * 8; → v3 = 30 × 8
v4 = v4 / 5; → v4 = 40 ÷ 5
というように説明出来ます。

これらが理解出来れば、次の少し難しいバージョンもすぐに理解できると思いますよ!

計算の表し方 2

上記の方法とは別に、コンパクトにする事が出来ます。
理解すれば、こちらの方が簡単かもしれません(笑)

それでは、またサンプルを。
//変数宣言
int v1 = 10; //初期値として値を入れる
int v2 = 20;
int v3 = 30;
int v4 = 40;

void Start () { //ゲーム開始直後のみ呼ばれる
 v1 += 5; //v1 には 15 が入る
 v2 -= 3; //v2 には 17 入る
 v3 *= 8; //v3 には 240 が入る
 v4 /= 5; //v4 には 8 が入る
}

1番初めのサンプルを少し変えただけです(笑)

どこが違うかと、
 v1 = v1 + 5; が v1 += 5; となっています。
他も一緒です。

表し方が違うだけで、やっている事は同じです。
v1 に 5 を足しています。

ちょっと分かりやすいように表にしてみました。
これらは、覚えておいた方が良いでしょう。





記号記号の説明
 A += B AにBを加算する
 A -= B AからBを引く
 A *= B AにBを乗算
 A /= B AをBで割る

この表を覚えてしまえば、計算の表し方はばっちしです!
実は、他にも != とかあるんですよね(笑)

それは計算に関係ないので後日記事を書くとして、少しまとめます。

まとめ

箇条書きで出してみます。
  • 「*」と「/」は、「×」と「÷」
  • 変数の型 変数名 = 初期値;
  • 変数 = 変数 [ 演算記号 ] 値;
  • 変数 [ 演算記号 ]= 値;

とこんな感じになります。

少し分かりにくいですが、その辺はご了承を……。
これで計算の表し方は覚えたでしょうか?

最低でも1つ目の方法、出来れば2つ目の方法を覚えて下さい。
これからは、2つ目の方を使っていきます。

それでは、今回はこの辺りで終わろうかと。
それでは皆さん、また次回!



【スポンサードリンク】








2017年06月23日

unityでのプログラミング基礎知識 2

関数とは

関数とは大まかにいえば、プログラムをまとめるもの、でしょうか?

unityでは、文字の羅列だけツラツラ書いていてもゲームは作れません。
unityは「ゲーム開発ソフト」ですので、「必要な時に、必要な分だけの処理」が必要になりますよね?

例えば、「剣が敵に当たったらダメージを与える」という処理などがそうです。

そこで役に立つのが、関数です。
というか、関数ないとプログラムは動きませんがね(笑)

という事で、そんな大事な「関数」を、前回お教えした変数を折り交えながら説明していきます!





ゲーム開発ランキングへ

関数について


まず、関数の書き方は
void 関数名 (引数) { 〜実行処理〜; }

こうです!

引数の説明は後に回すとしましてー。
思ったよりも大切な関数名の説明からいきましょう!

まず、関数の名前によって処理が決まっている、という事もあります。
決まっている名前以外の名前なら自分で決めれます。

例えば、
void Start () { }

この関数だと、Startという関数名ですよね?
これは処理が決まっていて、「ゲーム開始直後に1度だけ呼ばれる」という特徴を持っています。

他にも、
void Update () { }

この様にUpdateであれば「ゲーム実行中、絶え間なく呼ばれ続ける」という特徴があります。

ですが、
void Example () { }

このExampleという関数名はunityに設定されていません。
ですので、この関数を呼ばないと実行されません!

では、関数はどのようにして呼び出すのか?それは、
関数名(引数);

だけです。

引数の説明はまだしていないので無視するとして、上記のExample関数を呼びたい!
→Example();
はい、呼び出せました。

簡単でしょう?
あとは関数の{}内に実行処理を書き加えれば良いのです!
計算とかですね!

計算などは次回ご説明致します!
では、次はいよいよ引数の説明に入ります!

難しいんですよね……引数。
僕も、初めての頃はとても苦労しました……。
という訳で、皆さんにも分かるよう、解説していきます!

まず、引数とは何か?
言うなれば……「お土産」でしょうか……。

“ 関数を呼ぶプログラム ”にお土産を持たせて、実行させに行く……みたいな。
ちょっと自分でも何言ってるか分からないので、サンプルを。

//void 関数名 (引数) { 実行処理 }

//変数宣言
//変数の型 変数名;
int hp;  //hpという名の整数が入る変数(入れ物)

void Start () { //ゲーム開始直後に呼ばれる
 //hpに100を代入→hp = 100; に。
 hp = 100;

 //“ ReduceHp関数 ”を呼ぶ。
 //この時、引数(土産)は「10」に。
 ReduceHp(10);
}

//ここで土産(10)を「damage」として受け取る。
//土産を“ 受け取る ”時だけ、
受け取る変数の型を記述する。

//→ damage = 10; になる!
void ReduceHp (int damage) { //ReduceHp関数
 //hp(100)からdamage(10)を引く→ hp = 90;
 hp = hp - damage;
}


……これで分かって頂けるでしょうか…!
あまり自信は無いんですが……。

関数を呼びにいく際、値を持たせ、向こうの関数で使用する、という事なのですが……。

持っていった値を使って、呼ばれる関数の引数部分で変数を「作り」ます。
持ってきた値を作った変数に入れて使う、といった感じです。
説明が下手ですみません……!

ここで1つ言っておくと、引数はサンプルのように生で値を引数にしても良いですし、変数でも良いですよ!

いつも言ってるような気がしますが、分からなければ本当にコメントしてくださいね(笑)
大歓迎ですよ!

さて、文字数が2000を超えてきたのでそろそろ終わりにしようかと。
今回までで変数と関数、やってきましたがちゃんと覚えておいて下さいね!

プログラミングの基本中の基本となりますので!
それでは次回、計算の仕方や式の仕組みを解説します!

では、また次回!




【お勧めラノベ】

異世界魔法は遅れてる! 1

価格:691円
(2017/6/26 17:26時点)
感想(0件)



現代に生きる魔術師である八鍵水明は、突如現れた魔法陣によって友人とともに異世界へ転移してしまう。
だけど勇者として呼び出されたのは友人で、自分はそれに巻き込まれただけ!?
しかも帰る方法がわからない!?
水明は魔王討伐の旅に同行することを断り、ありとあらゆる現代魔術を駆使しながら、 もとの世界に帰る方法を探しはじめる――。





【スポンサードリンク】






unityでのプログラミング基礎知識 1

はじめに

今回は、「プログラミングの基礎知識」と言うことで軽くプログラミングの事をお話して終わります!

まずはじめに、プログラムっていうのは、いわばパソコンやシステムに対する命令ですよね。

僕達の世界にも、言語は沢山ありますよね?
それこそ日本語だったり、英語やフランス語などもあります。

それと同じ様に、プログラムにも言語があるんです。
僕が知っている言語だけでも、Java、C#、C++、htmlなど、沢山あるんですよね。

ちなみに、僕はJavaとC#、htmlが少ししか使えません!(笑)
その中でも、僕はunityでC#を使っています。
最近まではJavaを使っていたんですがね、都合上C#の方が良かったんです……。

ですので、コメントはどちらの言語でも返せると思いますよ!(`・ω・´)ゞ
まぁ、プロの方々に比べれば僕はヒヨッコに等しいんですがねー…

茶番がとても長くなりましたが、プログラム基礎をどうぞ。





プログラミング基礎知識 1

プログラミングは、大体「変数」「関数」「計算」この3つを使うと思います。

それぞれ説明していきますので、まず変数から。

◆ 変数
変数は、「値を入れる入れ物」だと思って下さい。
例えばHPやMP、スタミナとかで例えると、100とか260とかの「値」が入っていますよね?

その値を入れておくものが「変数」な訳です。
ですので例にそって説明すると、
「100が入っているHPという名の入れ物」が、さっきお教えした専門用語を入れると
「HPという名の変数に100が入っている」
という風になります!

プログラム書き方としては、
変数の型 変数の名前;

となります。
(スペースは半角で良いです。分かりやすいように全角にしました)

これで変数(入れ物)が作れました。
このように、変数を作ることを「変数宣言」と言ったりもします。

もう1つ、よく見てください。
1文の最後に「;」が付いていますよね?

これにはちゃんと意味があります。
「プログラムの1文が終わった」というのをシステムに認識させています。

これをつけて、初めて「変数宣言が終わった」という事です。
忘れずに付けましょう!

そして初っ端から気になったと思います。
「変数の型」とはなにか?

それは、「変数という入れ物に"なんの種類を入れるか"」を決めるものです。

なんでもかんでも変数に入れてたら、データがゴッチャになってバグの原因となります。
だから、この変数には整数、この変数には少数、というように整理できるようにする訳ですね。
まとめておくと、
int … 整数型(正の数や負の数)
float … 少数型(0.5とか)
bool … 真偽値(trueかfalseかどうか)
string … ストリング型(文字が入る)

※「bool」のtrueかfalseかはもっと噛み砕いて言えば、はい か いいえ か、○ か ✕ か、と言う事です!

ぐらいが代表的な型かと。

関数や計算まで説明していると文字数が凄い事になりそうなので、最後に変数のサンプルを紹介(というか説明?)して、終わりにしたいと思います!

関数などは次回以降に回させて下さい!すみません!

変数サンプル.cs
//コメント化 ここ(//)から1行はコメント

//変数の型 変数の名前;
int i; //整数が入る変数 i
float f; //少数が入る変数 f
bool b; //真偽値が入る変数 b
string s; //ストリングが入る変数 s

//変数宣言から値を入れる事も出来ます
int _i = 10;
//この場合、_i = 10; となる

説明は、↑このなかにあるので大丈夫だと思います!(笑)

分からないことがあれば、気軽にコメントくださいね!

それでは!




You Tubeの方もやっていますので、そちらもお願いします!






【お勧めのラノベ】

異世界チート魔術師(1) [ 内田健 ]

価格:626円
(2017/6/26 17:16時点)
感想(2件)



下校中、いきなり足元に魔法陣が出現し、異世界に飛ばされる男女2人。
気がつくと、そこは大草原で、目の前には“魔物”が!
2人はこれからどうするのか?
題名の通り、異世界で反則レベルをフルに使って無双する!
……これ、1番お勧めなんですよ!
是非、読んで下さい!




【スポンサードリンク】
自分でサイト作りたいと思いませんか?

ドメイン




レンタルサーバー



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

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


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

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

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

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

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

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