ゲームの全体像はできており、あとは描画処理を工夫して見た目をきれいに整えるだけというところです。
そこで、特定の画像”だけ”を、透明度を連続的に変化させたいと考えています。
イメージとしては、幽霊みたいな画像を、透明→半透明→不透明→半透明→透明 という感じです。
いまは全ての画像が同じブレンド方法で描画されています。コードは以下です。
(http://www.raywenderlich.com/9743/how-t ... kit-part-1
を参考にしています。)
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { //毎フーレム呼ばれるメソッド
glClearColor(1, 0.9, 0.9, 1); //背景色
glClear(GL_COLOR_BUFFER_BIT); //バッファをクリア
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //ブレンド方法の指定
glEnable(GL_BLEND); //ブレンドを使えるようにする
[self.scene renderWithModelViewMatrix:GLKMatrix4Identity]; //レンダー(以下参照)
}
- (void)renderWithModelViewMatrix:(GLKMatrix4)modelViewMatrix { //レンダー
[super renderWithModelViewMatrix:modelViewMatrix];
self.effect.texture2d0.name = self.textureInfo.name;
self.effect.texture2d0.enabled = YES;
self.effect.transform.modelviewMatrix = GLKMatrix4Multiply(modelViewMatrix, [self modelMatrix:YES]);
[self.effect prepareToDraw];
/*-------ポリゴンの位置座標、テクスチャの座標の計算をしている部分------------------------*/
long offset = (long)&_quad;
glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(TexturedVertex),
(void *) (offset + offsetof(TexturedVertex, geometryVertex)));
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(TexturedVertex),
(void *) (offset + offsetof(TexturedVertex, textureVertex)));
/*---------------------------------------------------------------------------------------------------------*/
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); //描画
}
自分の考えでは、各スプライトごとに透明度を保持するプロパティ(例: ghost.alpha )を与え、その透明度を以て描画できればいいな と考えています。
iPhoneアプリを作り始めて日が浅いのでわからないことばかりです。
なにか些細なヒントでも良いので、お気付きの点がございましたらお教えください。よろしくお願いします。