プロジェクト演習Ⅱ インタラクティブゲーム制作

Slides:



Advertisements
Similar presentations
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
Advertisements

情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラマのレベルアップ.
ブラウザの基本操作 前のページに戻る ブラウザの左上にある 「戻る」ボタンで、自分がたどってきた一つ前のページに戻ることができます。
PowerPoint活用マニュアル スライドショーにせず、そのまま見てね。.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
Ⅰ.電卓キーの基本的機能 00 0 1 2 3 6 ⑤ 4 9 8 7 M- MR MC + × % M+ - = ÷ C √ +/- GT
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
Javaでゲーム  山本拓弥.
基礎プログラミングおよび演習 第8回.
主体的なコミュニケーション.
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
第36課 頭と体を使うようにしています.
プロジェクト演習Ⅱ インタラクティブゲーム制作
さとりすと Satori Ghost Editor 里々ゴーストの統合開発環境を作ったよ page: 1/25
プロジェクト演習Ⅱ インタラクティブゲーム制作
プログラミング入門第4回 ~レゴロボットのプログラミング3~
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
環境の世紀17  第13回 駒場の電気を考える.
情報学部 プログラミング体験教室 (初級編)
情報 第2回:状態遷移 その2.
プロジェクト演習Ⅱ インタラクティブゲーム制作
経営工学基礎演習a Word第1回目.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
C 言語について 補足資料 資料および授業の情報は :
Borland Delphi 6 でビジュアルプログラミング
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
DirectX勉強会 第5回.
プログラミング入門 電卓を作ろう・パートIV!!.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
第6回:ラケットを動かそう! (キーボードによる物体の操作)
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
方程式の解きかた STEP 3 ■方程式の解きかたで、 等式の性質③を確認する ためのものです。 ■ マウスの左クリックで、この教材は進んで
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
プログラミング入門第6回 ~レゴロボットのプログラミング6~
情報 第1回:状態遷移 その1.
プロジェクト演習Ⅱ インタラクティブゲーム制作
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
ダスキン サービスマスターの仕事 清潔で快適な環境づくりのお手伝い! 業務向け もっと たくさんある
第1章 いよいよプログラミング!! ~文章の表示 printf~
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
基礎プログラミング演習 第6回.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
某有名落ちものゲーム っぽいものを作ってみる
某有名落ちものゲーム っぽいものを作ってみる
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
有効座席(出席と認められる座席) 左 列 中列 右列.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
ウェブデザイン演習 第6回.
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
C言語講座 制御(選択) 2006年 計算技術研究会.
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
プログラミング入門第2回 ~レゴロボットのプログラミング~
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プロジェクト演習Ⅱ インタラクティブゲーム制作
3.1 シューティングゲームの当たり判定 当たったら死亡.
プロジェクト演習Ⅱ インタラクティブゲーム制作
Presentation transcript:

プロジェクト演習Ⅱ インタラクティブゲーム制作 第4回 はじめての3Dプログラミング 跳んじゃうぞ編

今日の内容 跳びたい! fk_Vectorの使い方 状態による条件分岐 速度と加速度 衝突判定の第一歩

今週のプロジェクト 授業資料ページからダウンロードします 今週のFKUT更新情報 落としたZipファイルを解凍して、出てきたフォルダを好きなところに配置 今週のFKUT更新情報 特にないです

今日のサンプル 跳びます マリオ的な何かです アクションは跳んでなんぼです

数値の直打ちはやめましょう 変数を使った移動制御

数値の直打ちはよくないよ glTranslate()みたいな命令に直接数値を打ち込むのは、あまりよろしくない 位置や速度を直したくなったら大変 じゃあdoubleの変数ちまちま用意する? それも面倒な話です x,y,zみたいにいつもセットで使う数値をひとまとめにできればいいのにねー

できます fk_Vectorというスペシャルな型の変数を 使います 変数の作り方 値のセット方法 各種命令での利用方法 fk_Vector vPos, vSpd; 値のセット方法 vPos.set(50.0, 0.0, -10.0); vSpd.x = 0.0; vSpd.y = 0.0; vSpd.z = -2.0; 各種命令での利用方法 hogeModel.glMoveTo(vPos); hogeModel.loTranslate(vSpd);

こんなこともできるよ x,y,zそれぞれで足し算や引き算をしたい 掛け算や割り算もできる こう書かなきゃいけないところが… こう書けばできる vC.x = vA.x + vB.x; vC.y = vA.y + vB.y; vC.z = vA.z + vB.z; こう書けばできる vC = vA + vB; 掛け算や割り算もできる 方向は同じで進む距離だけ変えたい、なんて時に超絶便利

Coolなプログラムを 書くためのポイント 数値をセットする部分と、 命令を出す部分を、 出来る限り分けて書く 変数を使えば、数値のセットを先頭で 済ませて、後ろは純粋に命令の手順だけ、 という書き方にできる 今の内から意識できていると、後々お得

キーを押したら勝手に動く、は どーやるの? 前回の課題でやりたかった人もいるでしょう キーを押したら勝手に動く、は どーやるの?

前回の教えた条件分岐で できたこと キーを「押してる間」こうしろ キーを「押した瞬間」こうしてね だけど キーを押したら「こう動き始めてね」 これができなくて「スペシャルアクション」を断念した人もいるはず

フラグ、立ってますか? キーが押された!フラグが立った! if(キー押された) { フラグON } フラグ立ってる間はこうしなさい! アクションが終了したら、 フラグをベキッ!と折りなさい if(フラグON) { アクション1コマ分の処理 if(アクション終わり?) { フラグOFF } }

例題 Xキーを押すと、5秒間車体が赤くなり、 3倍の速さで走るようにしてみよう フラグとして秒数をカウントする変数を用意 フラグが立っているかいないかで処理を分岐 フラグが立っている場合の処理で、残り時間を減算していく

飛べないアクションはただのアクションだ お前ちょっと跳んでみろよ

ジャンプはアクションの命 ジャンプもフラグによって管理できる アクションのひとつ 今回は2種類ほど ジャンプのやり方を 考えてみよう 右図は驚異的な 跳躍力でお馴染みの 配管工Mさん

フラグ(モード)管理の流れ 普通の状態を0とする キーを押されたら上昇モード(1)とする 頂点に達したら下降モード(2)とする 着地したら0に戻す

上昇と下降ってどういう処理? 単純に一定距離ぶん上下移動させる 速度と加速度の関係を思いだそう glTranslate()で動かせばいいのだが… ずっと一定値だと単調で気持ち悪い 速度と加速度の関係を思いだそう 速度をいじってやることで動きに緩急が付く 重力加速度とかに則ってもいいけど、 そのままだとあんまり面白くない 気持ちいい動きを探してみよう

モードの境目 通常→上昇 上昇→下降 下降→着地 キーが押された瞬間 y方向の速度がマイナスになった時 物体のy座標が0になった時 マイナスになってしまうと地面を突き抜ける ことになる 「衝突判定」が必要

床との衝突判定 現在位置を調べる 入っちゃまずい位置だったら、 正しい位置に戻す getPosition()でそのModelの現在位置を 取得できる。fk_Vectorの変数で受け取る 入っちゃまずい位置だったら、 正しい位置に戻す y座標を調べて、マイナスだったら0にする glMoveTo()でyを0にした位置へ強制送還

奥深き衝突判定 床との判定や「一定範囲から出るな」の判定は楽 障害物との判定、敵キャラクターとの 判定はとてもとてもとても難しい 少しずつやっていくので、 少しずつ頑張りましょう

今日の課題 BASIC ADVANCED EXTREME 床の範囲から外に出られないようにしよう 2段ジャンプをできるようにしよう ダッシュ後慣性が残るようにしよう