一、 前言
很多大型游戏里 都采用了虚拟摇杆 ,即 手触摸 屏幕 才出现 摇杆,一方面 使 玩家更易操作, 另一方面则是使得 游戏的视觉变得更加酷炫 。这一篇教程就告诉大家如何 完成制作 一个 虚拟摇杆。
二、 图片准备
笔者 不太精通ps,也没有费时间去画图了。只用了两个简单的有填充色的 圆形作为 摇杆的组成部分。 小圆代表摇杆,大圆代表摇杆的底座。
三、 一些构想
首先把这个摇杆定位为一个飞行射击游戏的摇杆。即摇杆需要实现 飞机主角的移动。
所以,大体上这就是一个点击屏幕会出现的虚拟摇杆。但是,考虑到一般飞行射击游戏 的玩家惯用 左手进行飞行操作,所以我们把点击出现虚拟摇杆的触摸区域定在左边的一块矩形 区域 。 屏幕右边的区域 用于 点击屏幕触摸 发射 子弹等 功能性 道具使用。
这里又有一个问题。
一个固定大小的虚拟摇杆 可能会 不能满足玩家的需要。 不少玩家在 操纵摇杆时 手指会超出摇杆的范围(这也是玩游戏的人之常情嘛,总不能 让别人 正激动的时候 就 不让别人 操纵的摇杆了吧 。)
四、代码实现
想到这里我就先直接上代码了吧。。
#ifndef __YAOGAN_SCENE_H__
#define __YAOGAN_SCENE_H__
#include "cocos2d.h"
#include "SimpleAudioEngine.h"
using namespace cocos2d;
class Yaogan : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
CCSprite* jianpan_back;
CCSprite* jianpan;
int press_type ;//0-still 1-up 2-down 3-left 4-right
float anchor_bx;
float anchor_by;
float anchor_x;
float anchor_y;
virtual bool init();
// there's no 'id' in cpp, so we recommand to return the exactly class pointer
static cocos2d::CCScene* scene();
// a selector callback
//che