深圳大学计算机游戏开发实验4 碰撞检测与运动模拟

本文详细介绍了使用Box2D物理引擎在Cocos2d-x框架下开发台球游戏的过程,包括游戏编译、击球方式修改、进洞口增加、力度调整以及性能优化等。实验者通过解决编译错误、碰撞异常、力度控制等问题,提升了游戏体验,并添加了背景音乐和重启游戏功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、实验目的与要求

二、实验内容与方法

三、实验步骤与过程

1. 完成游戏编译并修改游戏名称和窗口大小。

2. 修改击球方式。

3. 增加6个进洞口。

4.修改球杆随距离变化的力度

5. 添加游戏优化。

四、实验结论或心得体会


一、实验目的与要求

1. 了解物理模拟、精灵的绘制与移动、触摸事件的应用等。

2. 熟悉基于Box2D的物理引擎。

3. 掌握Box2D触屏检测和碰撞检测机制。

二、实验内容与方法

1.完成游戏编译

成功编译并运行教材P150“游戏物理模拟实例-基于Box2D的游戏实例”。

2.修改击球方式 

修改教材源代码,使玩家在击球区域拖动鼠标左键,可以实现球杆的瞄准和能量的蓄积;当玩家松开鼠标左键,实现击球。

3.增加进洞口 

修改教材源代码,在角落增加(至少)一个进洞口,彩色球接触洞口后消失;白球接触洞口后消失并重启游戏。

4.修改球杆随距离变化的力度 

修改教材源代码,使球杆与台球之间的距离能够反映玩家击球力度大小。距离较远,则力度较大;距离较近,则力度较小。

5.其它优化功能 

修改教材源代码,使台球游戏性能更佳。

三、实验步骤与过程

1. 完成游戏编译并修改游戏名称和窗口大小。

(1)创建游戏项目,详细步骤见我的实验1的文章。

(2)出现错误:无法打开源文件“#include "Box2D/Box2D.h”,这是因为cocos2dx的版本为3.17,而课件源码是3.15版本。

将课件源码中的Box2D文件夹的内容复制到cocos2dx的3.17版本的对应位置。

2. 修改击球方式。

(1)尝试击打球后,球撞到边界会出现如下图所示的异常,这是因为碰撞的一方是墙,不能转换成BilliardSprite类型的对象。

 将其转化为char*对象,然后进行判断,如果为墙就直接退出函数。

char* name1 = (char*)contact->GetFixtureA()->GetBody()->GetUserData();
	char* name2 = (char*)contact->GetFixtureB()->GetBody()->GetUserData();
	//如果碰到墙则返回
	if(strcmp(name1,"boundary")==0|| strcmp(name2, "boundary") == 0)
	{
		return;
	}
	CCLOG("%s",static_cast<BilliardSprite*>(contact->GetFixtureA()->GetBody()->GetUserData())->getName());
	CCLOG("%s",static_cast<BilliardSprite*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值