SlideShare a Scribd company logo
cocos2d 2.0for iPhone
       勉強会
    cocos2dを覚えよう!	
  
         初級編③
動作環境
•  Mac OS X 10.8 Mountain Lion
•  xcode 4.5.2
•  cocos2d for iPhone 2.0
 http://www.cocos2d-iphone.org/
はじめに
•  cocos2dを覚えよう!初級編③
•  ボタンで移動してみよう!
もくじ
•    cocos2dの基本
•    Sceneの構成要素
•    忍ベーダー
•    仮想スティック
•    忍者の移動
cocos2dの基本
•  まずはcocos2dについておさらい!
cocos2dについて
•    オープンソース+無料で商用利用可能
•    2Dに特化
•    物理エンジン搭載(box2d,chipmunk)
•    効果音やBGMの再生も可能
•    OpenGL利用で高速描画
•    Objective-Cで書かれている
デメリット
•  iPhone標準のUIが使えない。
 (がんばれば使えるかも?)
cocos2dの基礎知識
•  スプライト(sprite):一般的には、キャラ
   クターを表示する技術。
•  スプライトエンジン:スプライトを簡単
   に管理、表示できる仕組み
cocos2dの座標
•  座標は左下が(0,0)
•  スプライトの基準点は中心(変更可能)
                                      (480,320)


                                 (基準点)




      (0,0)

 ※単位はpointで、通常1point=1px,retinaでは1point=2px
cocos2dの基礎知識
•  CCSprite
  –  回転、拡大、縮小、傾斜、透過
•  CCAnimation
  –  ぱらぱら漫画のような、画像切り替え
•  CCAction
  –  キャラクターに任意の動きを設定可能
  –  イベント処理
    (CCSendMessage、CCCallFunc)
cocos2dの基礎知識
•  CCTMXTiledMap
  –  タイルマップの表示
•  CCParticleSystem
  –  パーティクルの表示
•  CCSpriteBatchNode
  –  スプライトをまとめて管理
•  SimpleAudioEngine
  –  効果音、BGMを簡単に再生
こまったときは?
•  こまったときは、プログラミングガイド
   を見よう!
 –  http://www.cocos2d-iphone.org/wiki/
    doku.php/prog_guide:index
Sceneの構成要素
•  Sceneの構成要素を覚えよう!
Sceneは複数作れる
Sceneの中にはLayerをおける
Layerの中にはいろいろおける




      CCSprite、CCMenu、CCLabelBMFont、	
  
      CCSpriteBatchNode	
  
      などを置くことができる
LayerとSprite
  •  Layer	
  
      •  Sprite(手裏剣1)	
  
      •  Sprite(手裏剣2)	
  
      •  Sprite(手裏剣3)	
  
      •  Sprite(忍者)	
  

  レイヤーの中に、スプライトを置くことが
  できる	
  
LayerにSpriteBatchNodeを置ける




         SpriteBatchNodeを置いても、画
         面には表示されない。	
  
         	
  
         SpriteBatchNodeに、Spriteを置く
         と画面に表示される	
  
LayerとSpriteBatchNodeとSprite
          •  Layer	
  
              •  BatchNode	
  
                  •  Sprite(手裏剣1)	
  
                  •  Sprite(手裏剣2)	
  
                  •  Sprite(手裏剣3)	
  
              •  BatchNode	
  
                  •  Sprite(忍者)	
  

          レイヤーの中に、バッチノードをおいて、そ
          の中に、スプライトを置く	
  
          	
  
          バッチノードの中には、その中に含まれてい
          るスプライトしかおけない	
  
TagとZ
•  Layerや、スプライトなど、CCNodeには、
   TagとZが定義されています。
•  Tagを一意にすることで、getChildByTag
   で親Nodeから取得が可能です。
•  Zは重ね合わせの優先順位を表します。
•  Zが値が大きい方が上に描画されます。
忍ベーダー
•  次々と現れる侵略者(忍ベーダー)をたおしていこう!
•  忍ベーダーが、ライフラインを超えるとゲームオーバー
ルール
•  タイトル画面でボタンを押すとゲーム開始
•  READY→STARTのあと、ゲーム開始
•  忍ベーダーは、上から攻めてくる。大きさによって硬さ
   や得点が違う
•  忍者は、ボタンで左右移動
•  忍者が止まると上を向いて、手裏剣を自動で打つ
•  ライフラインに忍ベーダーが来たらゲームオーバー
•  GAMEOVERを表示して、タイトル画面に戻る
4inch対応
     •  今回は画面上部の見
        える部分を変更する
        ことで対応します	
  
     •  スコアなどの文字は、
        画面の高さをもとに
        表示して、画面内に
        収まるようにします。	
  
     •  忍ベーダーや手裏剣
        は、4inchの座標で計
        算します。3.5inchでも
        得ない画面外の部分
        でも処理を行います。	
  
がめんこうせい
タイトルscene   メインscene
タイトルscene
•  フロントlayer
  –  スコア
•  タイトルlayer
  –  タイトルロゴ
  –  スタートボタン
  –  床
•  背景layer
  –  背景画像
メインscene
•  フロントlayer
  –  スコア
•  スティックlayer
  –  左右のボタン
•  メインlayer
  –    READY? 、START!
  –    ゲームオーバー
  –    忍ベーダー、手裏剣
  –    忍者
  –    点線、床
•  背景layer
  –  背景画像
今回作るところ
  •  忍者が動くところまで
     つくります!
音楽素材について①
•  音楽素材については、PANICPUMPKIN様
   のご好意により、使用させていただいてい
   ます。
•  http://panicpumpkin.omiki.com/
•  ゲームBGMに特化したサイトなのでおす
   すめ!(曲数も多いです)
•  利用報告、 著作表記、リンクなどの明記
   不要で商用利用可能の音楽素材を多数公
   開されています。
音楽素材について②
•  有料でオリジナル曲を制作してもらえる
   「PANSOUND」というサイトもあるので、
   ぜひ利用してみてください!
•  http://pansound.com/
仮想スティック
•  仮想スティックをつくってみよう!
仮想スティックの仕様
   •  左右に移動ボタン	
  
   •  ボタンの状態を変数に
      設定	
  
ボタンの仕様
 •  おしてるあいだは色が
    変わる!	
  
 •  おしてるあいだは、変
    数(isL,	
  isR)がYESに
    なる	
  
普通のボタンとの違い
   •  普通のボタンは、おし
      て離した時にイベント
      が起きる	
  
   •  コントローラーのボタ
      ンは、押した時にON、
      離した時にOFFになる	
  
moveイベント
  •  ONになったあと、指を
     移動してボタン外に出
     たらOFFになる。	
  
  •  指を移動して、移動先
     がボタンだったらONに
     なる	
  
マルチタッチ
 •  両手を使うため、マル
    チタッチに対応する	
  
 •  複数の指で同じボタン
    が押された時も考慮す
    る	
  
 •  ボタンが押された時に
    UITouchを配列に記録し
    ておき、すべての指が
    離れたらOFFにする	
  
StickLayer.h	
  
@property	
  BOOL	
  isL;	
  
@property	
  BOOL	
  isR;	
  
GameData.h
@property	
  (nonatomic,	
  retain)	
  NSMutableArray	
  *stickArrayL;	
  
@property	
  (nonatomic,	
  retain)	
  NSMutableArray	
  *stickArrayR;
GameData.m
-­‐	
  (id)init{	
  
	
  	
  	
  	
  if((self	
  =	
  [super	
  init])){	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.stickArrayL	
  =	
  [NSMutableArray	
  array];	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.stickArrayR	
  =	
  [NSMutableArray	
  array];	
  
	
  	
  	
  	
  	
  	
  	
  	
  [self	
  resetScore];	
  
	
  	
  	
  	
  }	
  
                                    	
  return	
  self;	
  
}	
  
	
  
-­‐(void)resetStickArray{	
  
	
  	
  	
  	
  [self.stickArrayL	
  removeAllObjects];	
  
	
  	
  	
  	
  [self.stickArrayR	
  removeAllObjects];	
  
}
マルチタッチ対応	
  
cocos2dはデフォルトで、マルチタッチに対
応していないので対応させる!	
  
AppDelegate.m
  -­‐	
  (BOOL)application:(UIApplication	
  *)application	
  
didFinishLaunchingWithOptions:(NSDictionary	
  *)launchOptions	
  
{	
  
:	
  
        //	
  マルチタッチを有効にする	
  
        [glView	
  setMultipleTouchEnabled:YES];	
  
        return	
  YES;	
  
}	
  
	
  
ボタン画像の表示
•  ボタンのON,OFFの画像を所定の場所に表
   示する	
  
•  ON画像は、非表示にしておく	
  
•  StickLayerにバッチノードを追加し、その
   中にボタンを追加する
StickLayer.m①
-­‐(void)initLayer{	
  
	
  	
  	
  	
  [[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  
addSpriteFramesWithFile:@"NInvadersResource.plist"];	
  
	
  	
  	
  	
  CCSpriteBatchNode	
  *ninvadersBatchNode	
  =	
  [CCSpriteBatchNode	
  
batchNodeWithFile:@"NInvadersResource.pvr.ccz"	
  capacity:100];	
  
	
  	
  	
  	
  [self	
  addChild:ninvadersBatchNode	
  z:OBJECT_STICK	
  tag:OBJECT_STICK];	
  
	
  
StickLayer.m②
CCSprite	
  *sp;	
  
	
  	
  	
  	
  sp	
  =	
  [CCSprite	
  spriteWithSpriteFrameName:@"button_off.png"];	
  
	
  	
  	
  	
  sp.position	
  =	
  ccp(42,	
  92);	
  
	
  	
  	
  	
  [ninvadersBatchNode	
  addChild:sp	
  z:SPRITE_STICK_L_OFF	
  
tag:SPRITE_STICK_L_OFF];	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  sp	
  =	
  [CCSprite	
  spriteWithSpriteFrameName:@"button_on.png"];	
  
	
  	
  	
  	
  sp.position	
  =	
  ccp(42,	
  92);	
  
	
  	
  	
  	
  sp.visible	
  =	
  NO;	
  
	
  	
  	
  	
  [ninvadersBatchNode	
  addChild:sp	
  z:SPRITE_STICK_L_ON	
  
tag:SPRITE_STICK_L_ON];	
  
StickLayer.m③
sp	
  =	
  [CCSprite	
  spriteWithSpriteFrameName:@"button_off.png"];	
  
	
  	
  	
  	
  sp.position	
  =	
  ccp(320	
  -­‐	
  42,	
  92);	
  
	
  	
  	
  	
  [ninvadersBatchNode	
  addChild:sp	
  z:SPRITE_STICK_R_OFF	
  
tag:SPRITE_STICK_R_OFF];	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  sp	
  =	
  [CCSprite	
  spriteWithSpriteFrameName:@"button_on.png"];	
  
	
  	
  	
  	
  sp.position	
  =	
  ccp(320	
  -­‐	
  42,	
  92);	
  
	
  	
  	
  	
  sp.visible	
  =	
  NO;	
  
	
  	
  	
  	
  [ninvadersBatchNode	
  addChild:sp	
  z:SPRITE_STICK_R_ON	
  
tag:SPRITE_STICK_R_ON];	
  
}
タッチイベントを有効
•  StickLayerで、タッチイベントを有効にす
   る	
  
StickLayer.m
-­‐	
  (id)init{	
  
	
  	
  	
  	
  self	
  =	
  [[super	
  init]	
  autorelease];	
  
	
  	
  	
  	
  if	
  (self)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  イベントの無効/有効
                                      self.isTouchEnabled	
  =	
  YES;	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.isAccelerometerEnabled	
  =	
  NO;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  変数
                                      GameData	
  *gameData	
  =	
  [GameData	
  getInstance];	
  
	
  	
  	
  	
  	
  	
  	
  	
  [gameData	
  resetStickArray];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  //レイヤーの初期化
	
  	
  	
  	
  	
  	
  	
  	
  [self	
  initLayer];	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  return	
  self;	
  
}	
  
タッチイベント
•  タッチされたら、タッチ座標を取得	
  
•  タッチ座標がボタンの位置だったら	
  
 –  UITouchを保存する	
  
 –  ボタンが押されたことにする	
  
 –  ONのボタンを表示する(今回は、OFFのボタ
    ンを非表示にしなくてもいいデザインなので、
    OFFボタンはそのまま)	
  
StickLayer.m①
-­‐(void)ccTouchesBegan:(NSSet	
  *)touches	
  withEvent:(UIEvent	
  *)event	
  {	
  
	
  	
  	
  	
  CCSpriteBatchNode	
  *ninvadersBatchNode	
  =	
  (CCSpriteBatchNode*)[self	
  getChildByTag:OBJECT_STICK];	
  
	
  	
  	
  	
  GameData	
  *gameData	
  =	
  [GameData	
  getInstance];	
  
                                                     	
  for(UITouch*	
  touch	
  in	
  touches){	
  
                                                     	
                  	
  CGPoint	
  touchPoint	
  =	
  [touch	
  locationInView:[touch	
  view]];	
  
                                                     	
                  	
  touchPoint	
  =	
  [[CCDirector	
  sharedDirector]	
  convertToGL:touchPoint];	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_off_l	
  =	
  (CCSprite*)[ninvadersBatchNode	
  getChildByTag:SPRITE_STICK_L_OFF];	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_on_l	
  =	
  (CCSprite*)[ninvadersBatchNode	
  getChildByTag:SPRITE_STICK_L_ON];	
  
                                                     	
                  	
  if(CGRectContainsPoint(sp_off_l.boundingBox,	
  touchPoint)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [gameData.stickArrayL	
  addObject:touch];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sp_on_l.visible	
  =	
  YES;	
  
                                                     	
                  	
                	
  self.isL	
  =	
  TRUE;	
  
                                                     	
                  	
  }
StickLayer.m②
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_off_r	
  =	
  (CCSprite*)[ninvadersBatchNode	
  getChildByTag:SPRITE_STICK_R_OFF];	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_on_r	
  =	
  (CCSprite*)[ninvadersBatchNode	
  getChildByTag:SPRITE_STICK_R_ON];	
  
                                                     	
                  	
  if(CGRectContainsPoint(sp_off_r.boundingBox,	
  touchPoint)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [gameData.stickArrayR	
  addObject:touch];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sp_on_r.visible	
  =	
  YES;	
  
                                                     	
                  	
             	
  self.isR	
  =	
  TRUE;	
  
                                                     	
                  	
  }	
  
                                                     	
  }	
  
}	
  
TIPS①
•  touchesの中に複数のタッチイベントが
   入っているので、1個ずつ処理を行う	
  
  –  for(UITouch*	
  touch	
  in	
  touches){	
  
  –  }	
  
•  touch	
  座標を、cocos2dの座標に変換する	
  
  –  CGPoint	
  touchPoint	
  =	
  [touch	
  locationInView:
     [touch	
  view]];	
  
  –  touchPoint	
  =	
  [[CCDirector	
  sharedDirector]	
  
     convertToGL:touchPoint];	
  
TIPS②
•  CGRectContainsPointで、Rectの中にPointが
   含まれているかをチェックできる	
  
•  スプライトのRectは、sp_off_l.boundingBox
   で取得できるので、そのなかにタッチ座標
   が含まれているかをチェックする	
  
  –  if(CGRectContainsPoint(sp_off_l.boundingBox,	
  
     touchPoint)){
タッチ終了イベント
•  保存してあるUITouchを削除する	
  
•  全部のTouchが離されていたら	
  
 –  ONのボタンを非表示にする	
  
 –  ボタンが押されていないことにする	
  
StickLayer.m①
-­‐(void)ccTouchesEnded:(NSSet	
  *)touches	
  withEvent:(UIEvent	
  *)event	
  {	
  
	
  	
  	
  	
  CCSpriteBatchNode	
  *ninvadersBatchNode	
  =	
  (CCSpriteBatchNode*)[self	
  
getChildByTag:OBJECT_STICK];	
  
	
  	
  	
  	
  GameData	
  *gameData	
  =	
  [GameData	
  getInstance];	
  
	
  
StickLayer.m②
                                                   	
  for(UITouch*	
  touch	
  in	
  touches){	
  
                                                   	
           	
  CGPoint	
  touchPoint	
  =	
  [touch	
  locationInView:[touch	
  view]];	
  
                                                   	
           	
  touchPoint	
  =	
  [[CCDirector	
  sharedDirector]	
  
convertToGL:touchPoint];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_on_l	
  =	
  (CCSprite*)[ninvadersBatchNode	
  
getChildByTag:SPRITE_STICK_L_ON];	
  
                                                   	
           	
  [gameData.stickArrayL	
  removeObject:touch];	
  
                                                   	
           	
  if([gameData.stickArrayL	
  count]	
  ==	
  0){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sp_on_l.visible	
  =	
  NO;	
  
                                                   	
           	
              	
  self.isL	
  =	
  FALSE;	
  
                                                   	
           	
  }	
  
StickLayer.m③
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  CCSprite	
  *sp_on_r	
  =	
  (CCSprite*)[ninvadersBatchNode	
  
getChildByTag:SPRITE_STICK_R_ON];	
  
                                                   	
        	
  [gameData.stickArrayR	
  removeObject:touch];	
  
                                                   	
        	
  if([gameData.stickArrayR	
  count]	
  ==	
  0){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sp_on_r.visible	
  =	
  NO;	
  
                                                   	
        	
                 	
  self.isR	
  =	
  FALSE;	
  
                                                   	
        	
  }	
  
                                                   	
  }	
  
}	
  
タッチ移動イベント
•  いったんタッチを離したことにする	
  
•  移動先が押されたことにする	
  
	
  
StickLayer.m
-­‐(void)ccTouchesMoved:(NSSet	
  *)touches	
  withEvent:(UIEvent	
  *)event	
  {	
  
	
  	
  	
  	
  [self	
  ccTouchesEnded:touches	
  withEvent:event];	
  
	
  	
  	
  	
  [self	
  ccTouchesBegan:touches	
  withEvent:event];	
  
}	
  
アプリが裏に回ったら?
•  アプリが裏に回ったら、タッチ終了イベン
   トがこないくせに、次回起動時にタッチし
   てない状態でアプリが始まる!	
  
•  アプリの再開時に、保存してあるTouchを
   クリアしよう!
AppDelegate.m
-­‐(void)	
  applicationWillEnterForeground:
(UIApplication*)application	
  
{	
  
                        	
  if(	
  [navController_	
  visibleViewController]	
  ==	
  director_	
  )	
  
                        	
             	
  [director_	
  startAnimation];	
  
	
  
	
  	
  	
  	
  //	
  Stickの初期化
                  GameData	
  *gameData	
  =	
  [GameData	
  getInstance];	
  
	
  	
  	
  	
  [gameData	
  resetStickArray];	
  
}
忍者の移動
•  忍者のキャラクターを移動させよう!
忍者の仕様
  •  ボタンがおされてい
     るあいだ移動する	
  
  •  移動中は、アニメー
     ションする	
  
  •  ボタンを離すと手裏
     剣をなげるために、
     上を向く	
  
忍者の実装
•  忍者クラスを作ってメインLayerで呼び出
   す	
  
•  忍者クラスの中に、SPRITEをもっておく	
  
•  メインLayerの中で、忍者のクラスのtickを
   呼び出す	
  
•  忍者のクラス内では、ボタンの状態を見て
   移動を行う
忍者クラスを作成
•  メインLayerで忍者クラスを作成	
  
•  スティックLayerを参照できるように、忍
   者クラスにメインSceneを設定	
  
•  忍者クラス内のスプライトを、メイン
   Layerに追加
MainLayer.m
       //	
  忍者
                 CCSpriteBatchNode	
  *gameBatchNode	
  =	
  
(CCSpriteBatchNode*)[self	
  getChildByTag:OBJECT_GAME];	
  
	
  	
  	
  	
  self.ninja	
  =	
  [[[Ninja	
  alloc]	
  init]autorelease];	
  
	
  	
  	
  	
  self.ninja.mainScene	
  =	
  (MainScene*)[self	
  parent];	
  
	
  	
  	
  	
  [gameBatchNode	
  addChild:self.ninja.sprite	
  
z:SPRITE_GAME_NINJYA	
  tag:SPRITE_GAME_NINJYA];
忍者を動かす
•  メインLayerのスケジュールの中で、忍者
   クラスの関数を呼び出し忍者の移動を行う
MainLayer.m
-­‐(void)gamePlay:(ccTime)dt{	
  
	
  	
  	
  	
  //	
  忍者移動
	
  	
  	
  	
  [self.ninja	
  tick:dt];	
  
}
忍者の移動①
•  忍者クラスの中で、スティックLayerの状
   態を調べて移動処理を行う	
  
•  ボタンが押されていた場合	
  
 –  その方向を向いていなかった場合	
  
   •  その方向を向いたアニメーション	
  
 –  忍者の座標をdt*speed動かす	
  
Ninja.m
	
  if(self.mainScene.stickLayer.isL){	
  
	
  	
  	
  	
  	
  	
  	
  	
  if(self.way	
  !=	
  NINJYA_WAY_LEFT){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  stopAllActions];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  NSMutableArray	
  *animFrames	
  =	
  [NSMutableArray	
  array];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [animFrames	
  addObject:[[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  
spriteFrameByName:@"ninjya_l.png"]];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [animFrames	
  addObject:[[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  
spriteFrameByName:@"ninjya_l2.png"]];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CCAnimation	
  *animation	
  =	
  [CCAnimation	
  animationWithSpriteFrames:animFrames	
  delay:0.2f];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  id	
  repeatAnim	
  =	
  [CCRepeatForever	
  actionWithAction:[CCAnimate	
  
actionWithAnimation:animation]];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  runAction:repeatAnim];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  self.way	
  =	
  NINJYA_WAY_LEFT;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.waitCount	
  =	
  0;	
  
	
  	
  	
  	
  	
  	
  	
  	
  x	
  =	
  x	
  -­‐	
  dt	
  *	
  NINJA_SPEED;	
  
	
  	
  	
  	
  }
TIPS
•  CCAnimation	
  を使うと、パラパラ漫画のよ
   うなコマを切り替えるアニメーションが
   できる	
  
•  向きが変わった時だけアニメーションを
   開始することで、自然に動きをつけること
   ができる
忍者の移動②
•  ボタンが押されていない場合は、停止処理
   を行う	
  
•  アニメーションを止める	
  
•  忍者の向きを見てスプライトを変更する	
  
•  self.waitCountをカウントアップして、一定
   時間経過したら、上を向くようにする	
  
Ninja.m
else{	
  
	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  stopAllActions];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  if(self.way	
  ==	
  NINJYA_WAY_LEFT){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CCSpriteFrame	
  *sf	
  =	
  [[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  spriteFrameByName:@"ninjya_l.png"];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  setDisplayFrame:sf];	
  
	
  	
  	
  	
  	
  	
  	
  	
  }else	
  if(self.way	
  ==	
  NINJYA_WAY_RIGHT){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CCSpriteFrame	
  *sf	
  =	
  [[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  spriteFrameByName:@"ninjya_r.png"];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  setDisplayFrame:sf];	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  self.waitCount	
  +=	
  dt;	
  
	
  	
  	
  	
  	
  	
  	
  	
  if(self.way	
  !=	
  NINJYA_WAY_UP	
  &&	
  self.waitCount	
  >=	
  NINJA_UP_DELAY){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  self.waitCount	
  =	
  0;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  CCSpriteFrame	
  *sf	
  =	
  [[CCSpriteFrameCache	
  sharedSpriteFrameCache]	
  spriteFrameByName:@"ninjya_u.png"];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [self.sprite	
  setDisplayFrame:sf];	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  self.way	
  =	
  NINJYA_WAY_UP;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
TIPS
•  setDisplayFrameでスプライトの画像を変更
   できる	
  
忍者の移動③
•  忍者の移動先を確認して、画面外であれば
   はみださないように修正する	
  
Ninja.m
	
  float	
  xx	
  =	
  self.sprite.position.x	
  +	
  x;	
  
	
  	
  	
  	
  if(xx	
  <	
  30){	
  
	
  	
  	
  	
  	
  	
  	
  	
  xx	
  =	
  30;	
  
	
  	
  	
  	
  }else	
  if(xx	
  >	
  (320	
  -­‐	
  30)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  xx	
  =	
  (320	
  -­‐	
  30);	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  self.sprite.position	
  =	
  ccp(xx,	
  
self.sprite.position.y);
できた!
•  忍者が動いた!
まとめ
•  キャラクターをボタンで移動できるよう
   になった!
•  cocos2d 1.0.の資料だけど、参考に!
 –  http://tonosamart.com/blog/
とのさまラボ!
•  勉強会に参加した人どうしのコミニュティがほしい!
   勉強会の開催日時の告知がほしい!

 という意見をみなさまからいただいたので、
 コミニュティを作成しました!

 ぜひ「いいね!」をお願いします!




https://www.facebook.com/TonosamaLabo	
  
おわり
主催(共同開催):
株式会社 gooya
http://www.gooya.co.jp/
メドレー株式会社
http://www.medley.co.jp/

講師:西田 寛輔 (Tonosamart)
http://www.facebook.com/tonosamart

More Related Content

What's hot

週末プログラミングで作るカジュアルゲーム~シューティング編~
週末プログラミングで作るカジュアルゲーム~シューティング編~週末プログラミングで作るカジュアルゲーム~シューティング編~
週末プログラミングで作るカジュアルゲーム~シューティング編~
Nohina Hidenari
 
Aiwolfseminar2020
Aiwolfseminar2020Aiwolfseminar2020
Aiwolfseminar2020
Takedaatsushi
 
週末プログラミングで作るカジュアルゲーム~レーシング編~
週末プログラミングで作るカジュアルゲーム~レーシング編~週末プログラミングで作るカジュアルゲーム~レーシング編~
週末プログラミングで作るカジュアルゲーム~レーシング編~
Nohina Hidenari
 
Cocos2d-xハンズオン#1 in 大阪
Cocos2d-xハンズオン#1 in 大阪Cocos2d-xハンズオン#1 in 大阪
Cocos2d-xハンズオン#1 in 大阪
Shingo Yamano
 
幽霊の棲む家 技術資料
幽霊の棲む家 技術資料幽霊の棲む家 技術資料
幽霊の棲む家 技術資料
MaxNeetGames
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
UnityTechnologiesJapan002
 
AOZORAYOMITE and Intent
AOZORAYOMITE and IntentAOZORAYOMITE and Intent
AOZORAYOMITE and Intent
Yuki Higuchi
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2dHiroshi Oyamada
 
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
Yusuke HIDESHIMA
 
ブロックバスター制作資料
ブロックバスター制作資料ブロックバスター制作資料
ブロックバスター制作資料
MaxNeetGames
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオン
Kodai Yano
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
Kosuke Shinoda
 
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
とことんF#よぷよ!  F# + XNA ゲームプログラミング入門とことんF#よぷよ!  F# + XNA ゲームプログラミング入門
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
zecl1231
 
人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624
Kosuke Shinoda
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようRyota Shiroguchi
 
OrigenBoard and PandaBoard
OrigenBoard and PandaBoardOrigenBoard and PandaBoard
OrigenBoard and PandaBoardandroid sola
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
Katsushi Suzuki
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaandroid sola
 
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
hecomi
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor ExtendedMasamitsu Ishikawa
 

What's hot (20)

週末プログラミングで作るカジュアルゲーム~シューティング編~
週末プログラミングで作るカジュアルゲーム~シューティング編~週末プログラミングで作るカジュアルゲーム~シューティング編~
週末プログラミングで作るカジュアルゲーム~シューティング編~
 
Aiwolfseminar2020
Aiwolfseminar2020Aiwolfseminar2020
Aiwolfseminar2020
 
週末プログラミングで作るカジュアルゲーム~レーシング編~
週末プログラミングで作るカジュアルゲーム~レーシング編~週末プログラミングで作るカジュアルゲーム~レーシング編~
週末プログラミングで作るカジュアルゲーム~レーシング編~
 
Cocos2d-xハンズオン#1 in 大阪
Cocos2d-xハンズオン#1 in 大阪Cocos2d-xハンズオン#1 in 大阪
Cocos2d-xハンズオン#1 in 大阪
 
幽霊の棲む家 技術資料
幽霊の棲む家 技術資料幽霊の棲む家 技術資料
幽霊の棲む家 技術資料
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
 
AOZORAYOMITE and Intent
AOZORAYOMITE and IntentAOZORAYOMITE and Intent
AOZORAYOMITE and Intent
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
 
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
 
ブロックバスター制作資料
ブロックバスター制作資料ブロックバスター制作資料
ブロックバスター制作資料
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオン
 
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
 
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
とことんF#よぷよ!  F# + XNA ゲームプログラミング入門とことんF#よぷよ!  F# + XNA ゲームプログラミング入門
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
 
人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 
OrigenBoard and PandaBoard
OrigenBoard and PandaBoardOrigenBoard and PandaBoard
OrigenBoard and PandaBoard
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
 
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
 

Similar to ㉕cocos2dを覚えよう!初級編③

㉓cocos2dでゲームを作ろう!その1
㉓cocos2dでゲームを作ろう!その1㉓cocos2dでゲームを作ろう!その1
㉓cocos2dでゲームを作ろう!その1
Nishida Kansuke
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorial
Ryo Shimizu
 
Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法
Nishida Kansuke
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法
LINE Corporation
 
㊱タイルマップに挑戦
㊱タイルマップに挑戦㊱タイルマップに挑戦
㊱タイルマップに挑戦Nishida Kansuke
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
Masahiko Mizuta
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
Hands on
Hands onHands on
Hands on
Keiji Kamebuchi
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
Masayuki Nakano
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
Hiroaki Murayama
 
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
 
拙iPhoneアプリ『ういろう』でのboost成分
拙iPhoneアプリ『ういろう』でのboost成分拙iPhoneアプリ『ういろう』でのboost成分
拙iPhoneアプリ『ういろう』でのboost成分
5mingame2
 

Similar to ㉕cocos2dを覚えよう!初級編③ (15)

㉓cocos2dでゲームを作ろう!その1
㉓cocos2dでゲームを作ろう!その1㉓cocos2dでゲームを作ろう!その1
㉓cocos2dでゲームを作ろう!その1
 
Introduction for cocos2d
Introduction for cocos2dIntroduction for cocos2d
Introduction for cocos2d
 
Cocos2d
Cocos2dCocos2d
Cocos2d
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorial
 
Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法[CEDEC2017] LINEゲームのセキュリティ診断手法
[CEDEC2017] LINEゲームのセキュリティ診断手法
 
㊱タイルマップに挑戦
㊱タイルマップに挑戦㊱タイルマップに挑戦
㊱タイルマップに挑戦
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Hands on
Hands onHands on
Hands on
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
 
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
 
拙iPhoneアプリ『ういろう』でのboost成分
拙iPhoneアプリ『ういろう』でのboost成分拙iPhoneアプリ『ういろう』でのboost成分
拙iPhoneアプリ『ういろう』でのboost成分
 

More from Nishida Kansuke

【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
Nishida Kansuke
 
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
Nishida Kansuke
 
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
Nishida Kansuke
 
20170131 新潟セミナー
20170131 新潟セミナー20170131 新潟セミナー
20170131 新潟セミナー
Nishida Kansuke
 
PHP×コミニュケーションロボット
PHP×コミニュケーションロボットPHP×コミニュケーションロボット
PHP×コミニュケーションロボット
Nishida Kansuke
 
Mizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービスMizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービス
Nishida Kansuke
 
20160314 すしルート#3 資料
20160314 すしルート#3 資料20160314 すしルート#3 資料
20160314 すしルート#3 資料
Nishida Kansuke
 
ロボ年表を作ってみた
ロボ年表を作ってみたロボ年表を作ってみた
ロボ年表を作ってみた
Nishida Kansuke
 
Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」
Nishida Kansuke
 
jsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascriptjsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascript
Nishida Kansuke
 
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
Nishida Kansuke
 
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
Nishida Kansuke
 
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
Nishida Kansuke
 
JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)
Nishida Kansuke
 
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
Nishida Kansuke
 
iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発
Nishida Kansuke
 
クリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作ったクリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作った
Nishida Kansuke
 
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみようNishida Kansuke
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみようNishida Kansuke
 
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
Nishida Kansuke
 

More from Nishida Kansuke (20)

【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
 
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
 
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔)	-
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
 
20170131 新潟セミナー
20170131 新潟セミナー20170131 新潟セミナー
20170131 新潟セミナー
 
PHP×コミニュケーションロボット
PHP×コミニュケーションロボットPHP×コミニュケーションロボット
PHP×コミニュケーションロボット
 
Mizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービスMizuho.hack 未来の銀行に必要なサービス
Mizuho.hack 未来の銀行に必要なサービス
 
20160314 すしルート#3 資料
20160314 すしルート#3 資料20160314 すしルート#3 資料
20160314 すしルート#3 資料
 
ロボ年表を作ってみた
ロボ年表を作ってみたロボ年表を作ってみた
ロボ年表を作ってみた
 
Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」Pepper用課金ボックス「ロボコイン」
Pepper用課金ボックス「ロボコイン」
 
jsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascriptjsおじさん#5 ペッパーとjavascript
jsおじさん#5 ペッパーとjavascript
 
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
 
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
 
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
 
JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)JSを使ったアプリ開発!(JSオジサン#3)
JSを使ったアプリ開発!(JSオジサン#3)
 
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
 
iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発iBeaconを使ったアプリ開発
iBeaconを使ったアプリ開発
 
クリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作ったクリスマスハッカソン2013:サンタロスをUNITYで作った
クリスマスハッカソン2013:サンタロスをUNITYで作った
 
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
 
㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう㉞cocos2d-xの開発環境をインストールしてみよう
㉞cocos2d-xの開発環境をインストールしてみよう
 
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
 

Recently uploaded

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 

Recently uploaded (10)

【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 

㉕cocos2dを覚えよう!初級編③