Cocos2dx游戏开发系列笔记18:《跑酷》游戏源码解析(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-20 07:52 点击:
类的存取函数
骨头稍微明白一点了,以后慢慢理解吧。

 

在Player.CPP里,有构造方法,create方法。

构造方法主要初始化一些值

create方法主要是创建CCSprite这个主要对象,一些动画和参数的设置在 init 方法里。

主角滑翔方法,也是简单的播放滑翔动画和修改速度。

 

//设置下降动作
void Player::setFloating (bool value) {
	if (_floating == value) 
		return;
	if (value && _hasFloated) 
		return;
	_floating = value;
    this->stopAllActions();
	if (value) {
		_hasFloated = true;
        this->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(player_float.png));
        this->runAction(_floatAnimation);
		_vector.y += PLAYER_JUMP * 0.5f;
    } else {
        this->runAction(_rideAnimation);
	} 
}

 

还有void Player::update (float dt) 更新方法:

这里会慢慢的加速到速度最大值,然后匀速。

然后根据玩家的状态,来调整速度,是掉落、前进或者跳跃等等。

速度相关的,很好理解,但是很乱。

 

void Player::update (float dt) {
	//加速度到最大,然后匀速
	if (_speed + ACCELERATION <= _maxSpeed) {
		_speed += ACCELERATION;
	} else {
		_speed = _maxSpeed;
	}
	_vector.x = _speed;
	//CCLog(play state:%d,_state);
	switch (_state) {
	case kPlayerMoving:
		_vector.y -= GRAVITY;
		if (_hasFloated) 
			_hasFloated = false;
		break;
	case kPlayerFalling:
		if (_floating ) {
			_vector.y -= FLOATNG_GRAVITY;
			_vector.x *= FLOATING_FRICTION;
		} else {
			_vector.y -= GRAVITY;
			_vector.x *= AIR_FRICTION;
			_floatingTimer = 0;
		}
		break;
	case kPlayerDying:
		_vector.y -= GRAVITY;
		_vector.x = -_speed;
		this->setPositionX(this->getPositionX() + _vector.x);
		break;
	}
	if (_jumping) {
		_state = kPlayerFalling;
		_vector.y += PLAYER_JUMP * 0.25f;
		if (_vector.y > PLAYER_JUMP ) 
			_jumping = false;
	}
	if (_vector.y < -TERMINAL_VELOCITY) 
		_vector.y = -TERMINAL_VELOCITY;
	_nextPosition.y = this->getPositionY() + _vector.y;
	if (_vector.x * _vector.x < 0.01) 
		_vector.x = 0;
	if (_vector.y * _vector.y < 0.01) 
		_vector.y = 0;
	if (_floating) {
		_floatingTimer += dt;
		if (_floatingTimer > _floatingTimerMax) {
			_floatingTimer = 0;
			this->setFloating(false);
		}
	}
}

 

=======================================================================

\\

 

地图贴砖类:Block

就是左边这种方块,根据一定的顺序,拼成了游戏中的地图。

一般使用地图编辑器,编辑好了导入到游戏中。

以前笔记遇到过,骨头还没学到那,暂时一放。

Block.h 中,有类型枚举、间隔(?)枚举。

定义了贴砖的宽度,高度,贴砖图片,和一些基本的动画,如移动,小时,缩放等。

 

 

	CC_SYNTHESIZE(int, _type, Type);

	//声明一个成员变量_puffing以及getfunName函数,没有set函数。getfunName函数的实现要自己做
	CC_SYNTHESIZE_READONLY(bool, _puffing, Puffing);

	//声明成员变量数组:烟囱
	CC_SYNTHESIZE(CCArray *, _chimneys, Chimneys);
	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1