[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
292: 2017/11/20(月)13:12 ID:HFwgKDvF(1/7) AAS
>>261
心意気は買うしそういう誘導方法も1つの正解だが
俺の講義のターゲットは
"リンクを踏まない、自分でググらない初心者"
示されたURL先で自己学習できるくらいならばここにイージーな質問をしにこないし
そういう人物は黙々と先に進むので俺の講座に最初から見向きもしない
俺のターゲットはぐーたら連中
そこにビジネスチャンスが存在する
293: 2017/11/20(月)13:20 ID:HFwgKDvF(2/7) AAS
ということで一部の連中が暴れてることでこちらには好都合になっています。
大好評!俺様による身勝手な講義第4回目は「条件分岐ことIF文」です
プログラムは通常一番上から下へ向かって1行ずつ実行されていきますが
それでは毎回同じ結果しか得られません
ゲームでは"Aボタンを押したらジャンプ"や"Aボタンを押していない時はジャンプしない"というように
状況によって実行したい部分と実行したくない部分が発生します。
言いかえると
「その状態の時はA行のプログラミングを実行」
「別の状態の時はB行のプログラミングを実行」
という処理になります
これを実現するのが"if文"です
if文は以下のように記述します
例
if(条件式){
//結果
}
実際は下のようになります
if( 1 ){
Debug.Log("IF-OK");
}
上のif文は実行すると必ず"Debug.Log("IF-OK");"が実行されます。
例
if( 0 ){
Debug.Log("IF-OK");
}
このようにすると"Debug.Log("IF-OK");"が「実行されなくなります」
294: 2017/11/20(月)13:33 ID:HFwgKDvF(3/7) AAS
if文は条件式の結果が「0ならば不成立」「0以外(1以上)ならば成立」という性質があります。
条件式が"成立した時のみ"「{ }」で囲まれている部分のプログラムを実行してくれます。
先の例では「1」か「0」と固定値を入れていました。
このままでは何度実行しても同じ結果しか生まれません。
そこで条件式に変数を使う事で
「変数の中身が0じゃなくなったら、{ }の中身が実行される」という動きを実現できます
例
int a = 0;
if( a ){
Debug.Log("IF-OK"); // aの中身は0で初期かされているのでここは呼び出されない
}
例
int a = 1;
if( a ){
Debug.Log("IF-OK"); // aの中身は1で初期かされているのでここが呼び出される
}
上のプログラムですが、例えば「Aボタンが押されたらaに1を入れる」ようにすれば
Aボタンが押されたらキャラクターがジャンプしたり何かアクションをするといった
流れを組めることになります。
(実際のプログラム例は長くなるのでここでは省きます)
297: 2017/11/20(月)13:46 ID:HFwgKDvF(4/7) AAS
尚、ここまでの例は実際に試してもエラーになるのでご注意を。
ここからは具体的な使い方になります。
1と0以外、例えばaの中身が2の時にIF文の「{ }」部分を実行したい場合は下のようになります
例
int a = 4;
if( a == 4 ){
Debug.Log("IF-OK"); // aの中身は4で初期かされているのでここが呼び出される
}
「==」で結ぶ事で左辺「a」と右辺「4」が"同じ時のみ"実行されるようになります
算数などでは「=」と1つでしたが、プログラムでは「==」と2つ繋げるのでご注意ください。
このように「if( 条件式 )」の"条件式"部分には色々な数学的条件が書けます
これにより柔軟な条件を指定できるわけです。
今度は逆に「aの中身が4以外だったら」実行させるIF文の式です
例
int a = 2;
if( a != 4 ){
Debug.Log("IF-OK"); // aの中身は4以外の2で初期かされているのでここが呼び出される
}
上の例はaの中身が4になると呼び出されなくなります
IF文の条件式に指定できる物は非常に沢山あります。
プログラミングの肝とも言えます。
次にいくつか例を羅列します。
298(1): 2017/11/20(月)14:01 ID:HFwgKDvF(5/7) AAS
●「aの中身が2以上だったら」実行させるIF文の例
int a = 2;
if( a >= 2 ){ Debug.Log("IF-OK"); }
// 条件が一致し"IF-OK"と表示されます
// 「a => 2」このようには書けませんので順番に注意
●「aの中身が2以下だったら」実行させるIF文の例
int a = 2;
if( a <= 2 ){ Debug.Log("IF-OK"); }
// 条件が一致し"IF-OK"と表示されます
// 「a =< 2」このようには書けませんので順番に注意
●「aの中身が2より上(2は含まれない。3以上)だったら」実行させるIF文の例
int a = 2;
if( a > 2 ){ Debug.Log("IF-OK"); }
// 条件が不一致し"IF-OK"と表示されません。「a = 3」にすると"IF-OK"と表示されます。
●「aの中身が2より下だったら(2は含まれない。1以下)」を実行させるIF文の例
int a = 2;
if( a < 2 ){ Debug.Log("IF-OK"); }
// 条件が不一致し"IF-OK"と表示されません。「a = 1」にすると"IF-OK"と表示されます。
他にも沢山ありますが
IF文がプログラミングを
IF文がゲームを制してるといっても過言ではないほど多いので今日はここまで
ここからしばらくIF分が続くぞ。わかったかクソども。
303(2): 2017/11/20(月)14:50 ID:HFwgKDvF(6/7) AAS
>>299
このペースだと相当先かな
知りたい事があるなら言え
気分が良ければノリノリで答えてやるぞ
>>301-302
例えば>>274-279、>>281-290に大して「邪魔なだけ」と同じ事を言わずに
俺にだけ言ってくるのはとても気になっている証拠だと受け取っておく
これからも「身勝手に講義」続きますんで!よろしくお願いいたしまーす!
311: 2017/11/20(月)21:03 ID:HFwgKDvF(7/7) AAS
>>309
3Dゲームの場合はint型はあまり使いません
「0.123」のように座標が実数(小数点)な性質上
float型とVector3構造体をよく使う認識であっています。
Vector3も実際は内部にfloat型の変数を3つもっているだけです。
2Dゲームの場合はint型をよく使いfloat型を逆に全然使いません。
UIは2Dゲームと座標表現の性質がほぼ同じなのでint型をよく使う事になるわけです。
Vector4クラスはメッシュやシェーダーを直接扱いたい時に使用する事が多いようで普段は使わないでしょう。
enum列挙型はプログラムをより見やすく、メンテナンスしやすくするために使う事が多く
使い方が分からないうちは無理に使う必要はありません。
無意識に他のやり方で代用しているはずです。
定数や自作のゲームフラグなどを作りたい時に使用すると便利なものです。
実は気付いていないだけでシステムが最初から用意している物を
既に使用していたりしますよ
"Rigidbody.AddForce()"の第二引数に指定する
「ForceMode.Force」
「ForceMode.Acceleration」
「ForceMode.Impulse」
「ForceMode.VelocityChange」
などの値がenum列挙型で定義されている定数で、分かりやすい使い方だと思います
このように定義されていると思えばいいと思いますよ
public enum ForceMode {
Force = 0,
Acceleration = 1,
Impulse = 2,
VelocityChange = 3
}
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.031s