レス数が1000を超えているけど、まだ書けるかも知れないよ。
【新作】忍者くん、じゃじゃ丸くん【ファミコン版】
- 1 :名前は開発中のものです。:2013/08/22(木) NY:AN:NY.AN ID:m1HbME1x.net
- 数ヶ月前に、忍者じゃじゃ丸の新作が出たやん?
あれがガッカリ作品だったんで、
もう自分でファミコン版のノリを継承した新作を作ろうと思う。
オッサンたちのためにね。
ただし、じゃじゃ丸じゃ無しに
「忍者くん」で。
- 241 :名前は開発中のものです。:2013/10/01(火) 13:14:33.40 ID:ISE4IUb3.net
- >>240
>アクションゲームプログラミングの定石
、、定石って、単純に書いたらこんな感じじゃないの?
int 向き;
if(右キー押下)
{ 向き=右}
if(左キー押下)
{向き=左}
switch(向き){
case 右
posX += 移動量
break
case 左
posX -= 移動量
break
}
こんな感じでやると、
ジャンプさせたときに忍者くん仕様は困ったんだけど。
ジャンプした後、向きの中身を変えられないようにしなきゃならないよね?
右にジャンプしてるのに、左が入ったら左の力が加わってしまう。
でも、忍者くん仕様では右のジャンプ中に左向けるようにしなきゃならないじゃん?
そうすると>>239のいうように、ジャンプ中の向き変更は影響無にしないと、、、あ
移動量入れるところに、ジャンプ中では無い、を加えるのか。。そんな単純な問題なのかな?
- 242 :名前は開発中のものです。:2013/10/01(火) 13:18:41.49 ID:8DmFMWbS.net
- 忍者くんのステートを作ってステート毎にキー入力の挙動を定義していくだけのこと
- 243 :名前は開発中のものです。:2013/10/01(火) 14:17:33.06 ID:Tz6DjnSJ.net
- ステータス制御はゲーム作りの基本だね。
どんな状態でも通る共通部分と、ステータスによって変わる部分をわけて
ステータスごとに分かれる部分は「立ち」「歩き」「ジャンプ」「攻撃中」etcでセクションを分けないと。
なるべく共通部分を多くしたい気持ちはわかるが、それでごっちゃごちゃになるより
セクション分けされてる方が調整しやすくバグも見つけやすいし、それぞれごとにオミットできたり新セクションを追加できたりパーツ化されて見やすくもなる。敵キャラにも転用しやすい。
プレイヤーキャラ用と敵キャラ用をメソッド共用できるまで汎用性もたさなくて良いとは思うけどね。
- 244 :名前は開発中のものです。:2013/10/01(火) 20:16:54.89 ID:1YZFUVLu.net
- >>241
そのswitchの使い方はありえないな。
移動量が定数扱いだし、「移動量の符号」と「向き」を混同してる時点で
設計を間違えているか、そもそもろくに設計してなさそうだ。
- 245 :名前は開発中のものです。:2013/10/01(火) 20:38:22.55 ID:8DmFMWbS.net
- センスねえな
- 246 :名前は開発中のものです。:2013/10/02(水) 00:21:31.99 ID:K4+VDmr6.net
- 他にもこうゆう企画やれよ。
フォーメーションZV とかでいいから。
完成したら遊んでやる
- 247 :名前は開発中のものです。:2013/10/02(水) 11:14:58.15 ID:uub+qWbG.net
- どうやら俺はまだまだひよっこだったようだ
>>243
>ステータスごとに分かれる部分は「立ち」「歩き」「ジャンプ」「攻撃中」etcでセクションを分けないと
そうか、、、、すまないがどんな感じなのか学びたい。
俺が>>241で書いたみたいな単純なものでいいので、
あなたの組み方を教えてもらえないだろうか。
>>244
認めるよ、俺のセンスのなさを。というか、成長したいので
見本として「「移動量の符号」と「向き」を混同していない」っていう組み方っていうのを
疑似言語みたいなんでいいので簡単に教えてくれないだろうか
- 248 :名前は開発中のものです。:2013/10/02(水) 11:23:01.91 ID:uub+qWbG.net
- たとえば、よくある
向きの概念が無いような
if( 右キー ) PlayerX += 3 ;
if( 左キー ) PlayerX -= 3 ;
なんてそれこそダメじゃないの?
右を押したら、「向き」を右
左を押したら、「向き」を左、
「向き」が右ならX座標をプラス
「向き」が左ならX座標をマイナスするって考えるのがふつうだと思ったんだけど。
- 249 :名前は開発中のものです。:2013/10/02(水) 14:37:56.01 ID:f0T6BsoF.net
- void NINJAKUN::action()
{
switch(m_state)
{
case STOP: stop(); break;
case MOVE: move(); break;
case JUMP: jump(); break;
}
}
void NINJAKUN::stop()
{
if(isKeyDown(LEFT)){ m_direction = LEFT; m_state = MOVE; }
else if(isKeyDown(RIGHT)){ m_direction = RIGHT; m_state = MOVE; }
else if(isKeyDown(JUMP)){ m_state = JUMP; }
}
void NINJAKUN::move()
{
if(isKeyDown(LEFT)){ m_position.x -= IDOURYOU; }
else if(isKeyDown(RIGHT)){ m_position.x += IDOURYOU; }
else { m_state = STOP; }
}
void NINJAKUN::jump()
{
if(isKeyDown(LEFT)){ m_position.x -= IDOURYOU; }
else if(isKeyDown(RIGHT)){ m_position.x += IDOURYOU; }
}
みたいな
- 250 :名前は開発中のものです。:2013/10/02(水) 14:43:59.16 ID:f0T6BsoF.net
- void NINJAKUN::stop()
{
if(isKeyDown(LEFT)){ m_direction = LEFT; m_state = MOVE; }
else if(isKeyDown(RIGHT)){ m_direction = RIGHT; m_state = MOVE; }
else if(isKeyDown(JUMP)){ m_jump_direction = m_direction; m_state = JUMP; }
}
void NINJAKUN::jump()
{
if(isKeyDown(LEFT)){ m_direction = LEFT; }
else if(isKeyDown(RIGHT)){ m_direction = RIGHT; }
if(m_jump_direction == LEFT) { m_position.x -= IDOURYOU; }
else { m_position.y += IDOURYOU; }
}
か
292 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★