2012年2月22日水曜日

2.0 プログラムを書く前に

Unityのインストール、無事に出来ましたでしょうか。
無事に出来た人はお疲れ様でした。
無事じゃない人はもうちょっとがんばりましょう。

まあ、インストールしていなくても問題ないです。
前回の最後で書いたとおり、しばらく使わないので。


Unityも使わない、すぐにプログラムも書かない。
「じゃあ何するんだよ!」
って感じですが、簡単に言うとお勉強です。



たとえば、下のプログラムは、Unityに最初から入っているキャラクターを動かすプログラムですが・・・

function ApplyJumping ()
{
 // Prevent jumping too fast after each other
 if (lastJumpTime + jumpRepeatTime > Time.time)
  return;

 if (IsGrounded()) {
  // Jump
  // - Only when pressing the button down
  // - With a timeout so you can press the button slightly before landing  
  if (canJump && Time.time < lastJumpButtonTime + jumpTimeout) {
   verticalSpeed = CalculateJumpVerticalSpeed (jumpHeight);
   SendMessage("DidJump", SendMessageOptions.DontRequireReceiver);
  }
 }
}


function ApplyGravity ()
{
 if (isControllable) // don't move player at all if not controllable.
 {
  // Apply gravity
  var jumpButton = Input.GetButton("Jump");
  
  
  // When we reach the apex of the jump we send out a message
  if (jumping && !jumpingReachedApex && verticalSpeed <= 0.0)
  {
   jumpingReachedApex = true;
   SendMessage("DidJumpReachApex", SendMessageOptions.DontRequireReceiver);
  }
 
  if (IsGrounded ())
   verticalSpeed = 0.0;
  else
   verticalSpeed -= gravity * Time.deltaTime;
 }
}


「1行目ではApplyJumingという関数を定義しています。」
「13行目ではゲームオブジェクトに"DidJump"メッセージを送信しています。」
「34行目からは、着地しているかどうかで、垂直の移動速度の処理が分岐しています」


・・・なんて書いても、なんのこっちゃって感じですね。
英単語の意味から、なんとなーく、分かるかもしれません。
しかし、なんとなくで読めても、なんとなくで書けるものではありません。


中には、上記のようにプログラムをまず見せてから、部分的に書き換えて
「ほら、ここをこうやって変更すると、キャラクターの動きが変わりましたね!」
「つまり、この処理は○○という機能を表しているのがわかりますね」
みたいな教え方をする人とか本とか、あると思います。


が、そういうのは、ある程度プログラムの知識がある人が、ある程度プログラムの知識を持ってる人に
教えるようなスタイルじゃないかなーと、個人的には思います。
なので、そういうスタイルはとりませぬ。


かといって、ダラダラと理論ばっかり並べ立てたり、どうでもいい仕様とか書き綴るのは
たぶん退屈です。書いてるほうも退屈です。

そうならないように、注意しつつ、なるべく
「これはゲーム開発のためにやってるんだよ」
みたいなのを意識できるような風に書いていこうと思います。



さてそろそろ、「わかったからとっとと書け。つまらん。ラノベか」ってカンジですね。
次からは本当に、C#のお勉強です。


今日はここまで。
なかなか難しいなぁ。

0 件のコメント:

コメントを投稿