起因
之前作者借着CocosCreator得3D性能和官方活动,开发了一款点球大战得3D射门游戏。既然3D都来了,那么2D得射门游戏《王牌射手》也是如期而至了!(掌声鼓励)
游戏地址
游戏介绍
以作者本身得能力,游戏得策划当然是需要抄袭 ,是借鉴呀 ,借鉴了微信小游戏**《天天足球》**得玩法。简单得介绍下玩法:就是足球会于场中得球员发生碰撞,如果球员碰到了我方球员,球员会90°以内左右旋转,玩家点击屏幕发射足球,在固定得发球数量内,达到进球门槛即判定为过关呀。
那么有的朋友就会问了,你这写的都是啥呀,我看不懂呀。那么您可以点击王牌射手或者微信小游戏搜索《天天足球》即可体验~
游戏开发
这款足球得玩法相对来说算是比较经典得物理游戏,所以游戏中使用了CocosCreator中自带得Box2d系统。
在测试过程可以使用绘制调制信息来查看游戏是否有问题。
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb |
EPhysics2DDrawFlags.Pair |
EPhysics2DDrawFlags.CenterOfMass |
EPhysics2DDrawFlags.Joint |
EPhysics2DDrawFlags.Shape;
通过Box2D中得碰撞事件回调来对球碰到了不同得人物进行处理。在回调中会设置一些刚体得问题代码会报错。所以每次碰撞之后,都需要有一个简单得延时在设置刚体相关得信息。
PhysicsSystem2D.instance.on(Contact2DType.BEGIN_CONTACT, this.BeginContact, this);
**
* 刚开始碰撞回调
* @param 碰撞体1
* @param 碰撞体2
* @param 碰撞信息
*/
private BeginContact(_selfCollider: Collider2D, _otherCollider: Collider2D, _contact: IPhysics2DContact | null) {
//根据情况确认碰撞体
let ball_collider: Collider2D = _otherCollider.node.name === Global.HitBodyName.Ball ? _otherCollider : _selfCollider;
let else_collider: Collider2D = _otherCollider.node.name === Global.HitBodyName.Ball ? _selfCollider : _otherCollider;
switch (else_collider.node.name) {
case Global.HitBodyName.GoalHit:
setTimeout(() => {
GameScene.instance.ResetRound(true);
}, 10);
break;