全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

H5游戏开发,游戏开发

H5 游戏开发:推金币

2017/11/10 · HTML5 · 1 评论 · 游戏

原文出处: 凹凸实验室   

近期参与开发的一款「京东11.11推金币赢现金」(已下线)小游戏一经发布上线就在朋友圈引起大量传播。看到大家玩得不亦乐乎,同时也引发不少网友激烈讨论,有的说很带劲,有的大呼被套路被耍猴(无奈脸),这都与我的预期相去甚远。在相关业务数据呈呈上涨过程中,曾一度被微信「有关部门」盯上并要求做出调整,真是受宠若惊。接下来就跟大家分享下开发这款游戏的心路历程。

H5游戏开发:套圈圈

2018/01/25 · HTML5 · 游戏

原文出处: 凹凸实验室   

 

全球彩官网下载地址,H5 游戏开发:决胜三分球

2017/11/18 · HTML5 · 游戏

原文出处: 凹凸实验室   

原文出处: 凹凸实验室   

Unity初探—SpaceShoot

 


背景介绍

一年一度的双十一狂欢购物节即将拉开序幕,H5 互动类小游戏作为京东微信手Q营销特色玩法,在今年预热期的第一波造势中,势必要玩点新花样,主要肩负着社交传播和发券的目的。推金币以传统街机推币机为原型,结合手机强大的能力和生态衍生出可玩性很高的玩法。

前言

虽然本文标题为介绍一个水压套圈h5游戏,但是窃以为仅仅如此对读者是没什么帮助的,毕竟读者们的工作生活很少会再写一个类似的游戏,更多的是面对需求的挑战。我更希望能举一反三,给大家在编写h5游戏上带来一些启发,无论是从整体流程的把控,对游戏框架、物理引擎的熟悉程度还是在某一个小难点上的思路突破等。因此本文将很少详细列举实现代码,取而代之的是以伪代码展现思路为主。

游戏 demo 地址:

前言

本次是与腾讯手机充值合作推出的活动,用户通过氪金充值话费或者分享来获得更多的投篮机会,根据最终的进球数排名来发放奖品。

用户可以通过滑动拉出一条辅助线,根据辅助线长度和角度的不同将球投出,由于本次活动的开发周期短,在物理特性实现方面使用了物理引擎,所有本文的分享内容是如何结合物理引擎去实现一款投篮小游戏,如下图所示。

全球彩官网下载地址 1

前言

本次是与腾讯手机充值合作推出的活动,用户通过氪金充值话费或者分享来获得更多的投篮机会,根据最终的进球数排名来发放奖品。

用户可以通过滑动拉出一条辅助线,根据辅助线长度和角度的不同将球投出,由于本次活动的开发周期短,在物理特性实现方面使用了物理引擎,所有本文的分享内容是如何结合物理引擎去实现一款投篮小游戏,如下图所示。

全球彩官网下载地址 2

DestroyByBoundary脚本(C#)

  在游戏中我们添加了一个Cube正方体,让他来作为游戏的边界。它是可以触发触发事件的(勾选Is Trigger),当游戏中的碰撞体结束trigger事件,也就是出了正方体边界,我们就将其销毁。

1 void OnTriggerExit(Collider other)
2     {
3         Destroy(other.gameObject);
4     }

Description描述

OnTriggerExit is called when the Colliderother has stopped touching the trigger .

当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。


 

前期预研

在体验过 AppStore 上好几款推金币游戏 App 后,发现游戏核心模型还是挺简单的,不过 H5 版本的实现在网上很少见。由于团队一直在做 2D 类互动小游戏,在 3D 方向暂时没有实际的项目输出,然后结合此次游戏的特点,一开始想挑战用 3D 来实现,并以此项目为突破口,跟设计师进行深度合作,抹平开发过程的各种障碍。

全球彩官网下载地址 3

由于时间紧迫,需要在短时间内敲定方案可行性,否则项目延期人头不保。在快速尝试了 Three.js Ammo.js 方案后,发现不尽人意,最终因为各方面原因放弃了 3D 方案,主要是不可控因素太多:时间上、设计及技术经验上、移动端 WebGL 性能表现上,主要还是业务上需要对游戏有绝对的控制,加上是第一次接手复杂的小游戏,担心项目无法正常上线,有点保守,此方案遂卒。

如果读者有兴趣的话可以尝试下 3D 实现,在建模方面,首推 Three.js ,入手非常简单,文档和案例也非常详实。当然入门的话必推这篇 Three.js入门指南,另外同事分享的这篇 Three.js 现学现卖 也可以看看,这里奉上粗糙的 推金币 3D 版 Demo

希望能给诸位读者带来的启发

  1. 技术选型
  2. 整体代码布局
  3. 难点及解决思路
  4. 优化点

准备

全球彩官网下载地址 4

此次我使用的游戏引擎是 LayaAir,你也可以根据你的爱好和实际需求选择合适的游戏引擎进行开发,为什么选择该引擎进行开发 ,总的来说有以下几个原因:

  • LayaAir 官方文档、API、示例学习详细、友好,可快速上手
  • 除了支持 2D 开发,同时还支持 3D 和 VR 开发,支持 AS、TS、JS 三种语言开发
  • 在开发者社区中提出的问题,官方能及时有效的回复
  • 提供 IDE 工具,内置功能有打包 APP、骨骼动画转换、图集打包、SWF转换、3D 转换等等

全球彩官网下载地址 5

物理引擎方面采用了 Matter.js,篮球、篮网的碰撞弹跳都使用它来实现,当然,还有其他的物理引擎如 planck.js、p2.js 等等,具体没有太深入的了解,Matter.js 相比其他引擎的优势在于:

  • 轻量级,性能不逊色于其他物理引擎
  • 官方文档、Demo 例子非常丰富,配色有爱
  • API 简单易用,轻松实现弹跳、碰撞、重力、滚动等物理效果
  • Github Star 数处于其他物理引擎之上,更新频率更高

准备

全球彩官网下载地址 6

此次我使用的游戏引擎是 LayaAir,你也可以根据你的爱好和实际需求选择合适的游戏引擎进行开发,为什么选择该引擎进行开发 ,总的来说有以下几个原因:

  • LayaAir 官方文档、API、示例学习详细、友好,可快速上手
  • 除了支持 2D 开发,同时还支持 3D 和 VR 开发,支持 AS、TS、JS 三种语言开发
  • 在开发者社区中提出的问题,官方能及时有效的回复
  • 提供 IDE 工具,内置功能有打包 APP、骨骼动画转换、图集打包、SWF转换、3D 转换等等

全球彩官网下载地址 7

物理引擎方面采用了 Matter.js,篮球、篮网的碰撞弹跳都使用它来实现,当然,还有其他的物理引擎如 planck.js、p2.js 等等,具体没有太深入的了解,Matter.js 相比其他引擎的优势在于:

  • 轻量级,性能不逊色于其他物理引擎
  • 官方文档、Demo 例子非常丰富,配色有爱
  • API 简单易用,轻松实现弹跳、碰撞、重力、滚动等物理效果
  • Github Star 数处于其他物理引擎之上,更新频率更高

Mover脚本

  游戏中通过该脚本来控制陨石的坠落和子弹的射出,他们都是在Z轴方向上运动。通过设置speed可以控制其飞行的速度和前后方向。

1 public float speed;
2     // Use this for initialization
3     void Start () {
4         GetComponent<Rigidbody>().velocity = transform.forward * speed;
5     }

Description描述

The velocity vector of the rigidbody.

刚体的速度向量。

这里有各个轴的定义:

transform.forward:蓝色Z轴
transform.right:红色轴X轴
transform.up:黄色轴Y轴。

技术选型

放弃了 3D 方案,在 2D 技术选型上就很从容了,最终确定用 CreateJS Matter.js 组合作为渲染引擎和物理引擎,理由如下:

  • CreateJS 在团队内用得比较多,有一定的沉淀,加上有老司机带路,一个字「稳」;
  • Matter.js 身材纤细、文档友好,也有同事试玩过,完成需求绰绰有余。

技术选型

一个项目用什么技术来实现,权衡的因素有许多。其中时间是必须优先考虑的,毕竟效果可以减,但上线时间是死的。

本项目预研时间一周,真正排期时间只有两周。虽然由项目特点来看比较适合走 3D 方案,但时间明显是不够的。最后保守起见,决定采用 2D 方案尽量逼近真实立体的游戏效果。

从游戏复杂度来考虑,无须用到 Egret 或 Cocos 这些“牛刀”,而轻量、易上手、团队内部也有深厚沉淀的 CreateJS 则成为了渲染框架的首选。

另外需要考虑的是是否需要引入物理引擎,这点需要从游戏的特点去考虑。本游戏涉及重力、碰撞、施力等因素,引入物理引擎对开发效率的提高要大于学习使用物理引擎的成本。因此权衡再三,我引入了同事们已经玩得挺溜的 Matter.js。( Matter.js 文档清晰、案例丰富,是切入学习 web 游戏引擎的一个不错的框架)

开始

开始

RandomRotator脚本

  游戏中的陨石在飞行的过程中我们希望让他翻滚掉了,这里我们为他添加了翻滚的脚本。其中tumble用来控制滚动速度。

1 public float tumble;//gun dong
2     // Use this for initialization
3     void Start () {
4         GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;
5     }

Rigidbody.angularVelocity

Description描述

The angular velocity vector of the rigidbody.

刚体的角速度向量。

这里有关生成随机数的常用方法:

Random

  • insideUnitCircle:返回单位半径为1圆中随机一点。
  • insideUnitSphere:返回单位半径为1球体中随机一点。
  • onUnitSphere:返回单位半径为1球体表面上随机一点。
  • Range:Min~Max
  • rotation:返回一个随机的角度(只读)。
  • seed:设置用于生成随机数的种子
  • value:返回[0.0~1.0] 之间的随机数(只读)

 

技术实现

因为是 2D 版本,所以不需要建各种模型和贴图,整个游戏场景通过 canvas 绘制,覆盖在背景图上,然后再做下机型适配问题,游戏主场景就处理得差不多了,其他跟 3D 思路差不多,核心元素包含障碍物、推板、金币、奖品和技能,接下来就分别介绍它们的实现思路。

整体代码布局

在代码组织上,我选择了面向对象的手法,对整个游戏做一个封装,抛出一些控制接口给其他逻辑层调用。

伪代码:

<!-- index.html --> <!-- 游戏入口 canvas --> <canvas id="waterfulGameCanvas" width="660" height="570"></canvas>

1
2
3
<!-- index.html -->
<!-- 游戏入口 canvas -->
<canvas id="waterfulGameCanvas" width="660" height="570"></canvas>

// game.js /** * 游戏对象 */ class Waterful { // 初始化函数 init () {} // CreateJS Tick,游戏操作等事件的绑定放到游戏对象内 eventBinding () {} // 暴露的一些方法 score () {} restart () {} pause () {} resume () {} // 技能 skillX () {} } /** * 环对象 */ class Ring { // 于每一个 CreateJS Tick 都调用环自身的 update 函数 update () {} // 进针后的逻辑 afterCollision () {} }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// game.js
/**
* 游戏对象
*/
class Waterful {
  // 初始化函数
  init () {}
  
  // CreateJS Tick,游戏操作等事件的绑定放到游戏对象内
  eventBinding () {}
  
  // 暴露的一些方法
  score () {}
  
  restart () {}
  
  pause () {}
  
  resume () {}
  
  // 技能
  skillX () {}
}
/**
* 环对象
*/
class Ring {
  // 于每一个 CreateJS Tick 都调用环自身的 update 函数
  update () {}
  
  // 进针后的逻辑
  afterCollision () {}
}

JavaScript

// main.js // 根据业务逻辑初始化游戏,调用游戏的各种接口 const waterful = new Waterful() waterful.init({...})

1
2
3
4
// main.js
// 根据业务逻辑初始化游戏,调用游戏的各种接口
const waterful = new Waterful()
waterful.init({...})

一、初始化游戏引擎

首先对 LayaAir 游戏引擎进行初始化设置,Laya.init 创建一个 1334×750 的画布以 WebGL 模式去渲染,渲染模式下有 WebGL 和 Canvas,使用 WebGL 模式下会出现锯齿的问题,使用 Config.isAntialias 抗锯齿可以解决此问题,并且使用引擎中自带的多种屏幕适配 screenMode

如果你使用的游戏引擎没有提供屏幕适配,欢迎阅读另一位同事所写的文章【H5游戏开发:横屏适配】。

JavaScript

... Config.isAntialias = true; // 抗锯齿 Laya.init(1334, 750, Laya.WebGL); // 初始化一个画布,使用 WebGL 渲染,不支持时会自动切换为 Canvas Laya.stage.alignV = 'top'; // 适配垂直对齐方式 Laya.stage.alignH = 'middle'; // 适配水平对齐方式 Laya.stage.screenMode = this.Stage.SCREEN_HORIZONTAL; // 始终以横屏展示 Laya.stage.scaleMode = "fixedwidth"; // 宽度不变,高度根据屏幕比例缩放,还有 noscale、exactfit、showall、noborder、full、fixedheight 等适配模式 ...

1
2
3
4
5
6
7
8
...
Config.isAntialias = true; // 抗锯齿
Laya.init(1334, 750, Laya.WebGL); // 初始化一个画布,使用 WebGL 渲染,不支持时会自动切换为 Canvas
Laya.stage.alignV = 'top'; // 适配垂直对齐方式
Laya.stage.alignH = 'middle'; // 适配水平对齐方式
Laya.stage.screenMode = this.Stage.SCREEN_HORIZONTAL; // 始终以横屏展示
Laya.stage.scaleMode = "fixedwidth"; // 宽度不变,高度根据屏幕比例缩放,还有 noscale、exactfit、showall、noborder、full、fixedheight 等适配模式
...

一、初始化游戏引擎

首先对 LayaAir 游戏引擎进行初始化设置,Laya.init 创建一个 1334×750 的画布以 WebGL 模式去渲染,渲染模式下有 WebGL 和 Canvas,使用 WebGL 模式下会出现锯齿的问题,使用 Config.isAntialias 抗锯齿可以解决此问题,并且使用引擎中自带的多种屏幕适配 screenMode

如果你使用的游戏引擎没有提供屏幕适配,欢迎阅读另一位同事所写的文章【H5游戏开发:横屏适配】。

JavaScript

... Config.isAntialias = true; // 抗锯齿 Laya.init(1334, 750, Laya.WebGL); // 初始化一个画布,使用 WebGL 渲染,不支持时会自动切换为 Canvas Laya.stage.alignV = 'top'; // 适配垂直对齐方式 Laya.stage.alignH = 'middle'; // 适配水平对齐方式 Laya.stage.screenMode = this.Stage.SCREEN_HORIZONTAL; // 始终以横屏展示 Laya.stage.scaleMode = "fixedwidth"; // 宽度不变,高度根据屏幕比例缩放,还有 noscale、exactfit、showall、noborder、full、fixedheight 等适配模式 ...

1
2
3
4
5
6
7
8
...
Config.isAntialias = true; // 抗锯齿
Laya.init(1334, 750, Laya.WebGL); // 初始化一个画布,使用 WebGL 渲染,不支持时会自动切换为 Canvas
Laya.stage.alignV = 'top'; // 适配垂直对齐方式
Laya.stage.alignH = 'middle'; // 适配水平对齐方式
Laya.stage.screenMode = this.Stage.SCREEN_HORIZONTAL; // 始终以横屏展示
Laya.stage.scaleMode = "fixedwidth"; // 宽度不变,高度根据屏幕比例缩放,还有 noscale、exactfit、showall、noborder、full、fixedheight 等适配模式
...

PlayerController脚本

  该脚本用来控制飞船的飞翔范围,倾斜角,射击速度等。

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 [System.Serializable]
 5 public class Boundary
 6 {
 7     public float xMin, xMax, zMin, zMax;
 8 }
 9 public class PlayerController : MonoBehaviour
10 {
11     public float speed;
12     public float tilt;
13     public Boundary boundary;
14 
15     private float nextFire;
16     public float fireRate;
17     public GameObject shot;
18     public Transform shotSqawn;
19     // Use this for initialization
20     void Start()
21     {
22 
23     }
24 
25     // Update is called once per frame
26     void Update()
27     {
28         if (Input.GetButton("Fire1")&&Time.time >nextFire)
29         {
30             nextFire = Time.time   fireRate;
31             Instantiate(shot, shotSqawn.position, shotSqawn.rotation);
32             GetComponent<AudioSource>().Play();
33         }
34     }
35 
36     void FixedUpdate()
37     {
38         float moveHorizontal = Input.GetAxis("Horizontal");
39         float moveVertical = Input.GetAxis("Vertical");
40 
41         Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
42         GetComponent<Rigidbody>().velocity = movement * speed;
43         GetComponent<Rigidbody>().rotation = Quaternion.Euler(0.0f, 0.0f, GetComponent<Rigidbody>().velocity.x * -tilt);
44 
45         GetComponent<Rigidbody>().position = new Vector3(
46             Mathf.Clamp(GetComponent<Rigidbody>().position.x,boundary.xMin,boundary.xMax),
47             0.0f,
48             Mathf.Clamp(GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
49             );
50     }
51 }

Serializable 序列化:

Inherits from Attribute

The Serializable attribute lets you embed a class with sub properties in the inspector.

Serializable(序列化)属性让你植入一个类用替代内容在Inspector(检视面板) 


Mathf.Clamp 限制

static function Clamp (value : float, min : float, max : float) : float

Description描述

Clamps a value between a minimum float and maximum float value.

限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value 


Time.deltaTime 增量时间

 

static var deltaTime : float

Description描述

The time in seconds it took to complete the last frame (Read Only).

以秒计算,完成最后一帧的时间(只读)。

Use this function to make your game frame rate independent.

使用这个函数使和你的游戏帧速率无关。

放在Update()函数中的代码是以帧来执行的.如果我们需要物体的移动以秒来执行.我们需要将物体移动的值乘以Time.deltaTime。


Quaternion.Euler 欧拉角

static function Euler (x : float, y : float, z : float) : Quaternion

Description描述

Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis (in that order).

返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(像这样的顺序)。


障碍物

通过审稿确定金币以及奖品的活动区域,然后把活动区域之外的区域都作为障碍物,用来限制金币的移动范围,防止金币碰撞时超出边界。这里可以用 Matter.js 的 Bodies.fromVertices 方法,通过传入边界各转角的顶点坐标一次性绘制出形状不规则的障碍物。 不过 Matter.js 在渲染不规则形状时存在问题,需要引入 poly-decomp 做兼容处理。

全球彩官网下载地址 8

JavaScript

World.add(this.world, [ Bodies.fromVertices(282, 332,[ // 顶点坐标 { x: 0, y: 0 }, { x: 0, y: 890 }, { x: 140, y: 815 }, { x: 208, y: 614 }, { x: 548, y: 614 }, { x: 612, y: 815 }, { x: 750, y: 890 }, { x: 750, y: 0 } ]) ]);

1
2
3
4
5
6
7
8
9
10
11
12
13
World.add(this.world, [
  Bodies.fromVertices(282, 332,[
    // 顶点坐标
    { x: 0, y: 0 },
    { x: 0, y: 890 },
    { x: 140, y: 815 },
    { x: 208, y: 614 },
    { x: 548, y: 614 },
    { x: 612, y: 815 },
    { x: 750, y: 890 },
    { x: 750, y: 0 }
  ])
]);

初始化

游戏的初始化接口主要做了4件事情:

  1. 参数初始化
  2. CreateJS 显示元素(display object)的布局
  3. Matter.js 刚体(rigid body)的布局
  4. 事件的绑定

下面主要聊聊游戏场景里各种元素的创建与布局,即第二、第三点。

二、初始化物理引擎、加入场景

然后对 Matter.js 物理引擎进行初始化,Matter.Engine 模块包含了创建和处理引擎的方法,由引擎运行这个世界,engine.world 则包含了用于创建和操作世界的方法,所有的物体都需要加入到这个世界中,Matter.Render 是将实例渲染到 Canvas 中的渲染器。

enableSleeping 是开启刚体处于静止状态时切换为睡眠状态,减少物理运算提升性能,wireframes 关闭用于调试时的线框模式,再使用 LayaAir 提供的 Laya.loadingnew Sprite 加载、绘制已简化的场景元素。

JavaScript

... this.engine; var world; this.engine = Matter.Engine.create({ enableSleeping: true // 开启睡眠 }); world = this.engine.world; Matter.Engine.run(this.engine); // Engine 启动 var render = LayaRender.create({ engine: this.engine, options: { wireframes: false, background: "#000" } }); LayaRender.run(render); // Render 启动 ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
this.engine;
var world;
this.engine = Matter.Engine.create({
    enableSleeping: true // 开启睡眠
});
world = this.engine.world;
Matter.Engine.run(this.engine); // Engine 启动
var render = LayaRender.create({
    engine: this.engine,
    options: { wireframes: false, background: "#000" }
});
LayaRender.run(render); // Render 启动
...

全球彩官网下载地址 9

全球彩官网下载地址 10

JavaScript

... // 加入背景、篮架、篮框 var bg = new this.Sprite(); Laya.stage.addChild(bg); bg.pos(0, 0); bg.loadImage('images/bg.jpg'); ...

1
2
3
4
5
6
7
...
// 加入背景、篮架、篮框
var bg = new this.Sprite();
Laya.stage.addChild(bg);
bg.pos(0, 0);
bg.loadImage('images/bg.jpg');
...

二、初始化物理引擎、加入场景

然后对 Matter.js 物理引擎进行初始化,Matter.Engine 模块包含了创建和处理引擎的方法,由引擎运行这个世界,engine.world 则包含了用于创建和操作世界的方法,所有的物体都需要加入到这个世界中,Matter.Render 是将实例渲染到 Canvas 中的渲染器。

enableSleeping 是开启刚体处于静止状态时切换为睡眠状态,减少物理运算提升性能,wireframes 关闭用于调试时的线框模式,再使用 LayaAir 提供的 Laya.loadingnew Sprite 加载、绘制已简化的场景元素。

JavaScript

... this.engine; var world; this.engine = Matter.Engine.create({ enableSleeping: true // 开启睡眠 }); world = this.engine.world; Matter.Engine.run(this.engine); // Engine 启动 var render = LayaRender.create({ engine: this.engine, options: { wireframes: false, background: "#000" } }); LayaRender.run(render); // Render 启动 ...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
this.engine;
var world;
this.engine = Matter.Engine.create({
    enableSleeping: true // 开启睡眠
});
world = this.engine.world;
Matter.Engine.run(this.engine); // Engine 启动
var render = LayaRender.create({
    engine: this.engine,
    options: { wireframes: false, background: "#000" }
});
LayaRender.run(render); // Render 启动
...

全球彩官网下载地址 11

全球彩官网下载地址 12

JavaScript

... // 加入背景、篮架、篮框 var bg = new this.Sprite(); Laya.stage.addChild(bg); bg.pos(0, 0); bg.loadImage('images/bg.jpg'); ...

1
2
3
4
5
6
7
...
// 加入背景、篮架、篮框
var bg = new this.Sprite();
Laya.stage.addChild(bg);
bg.pos(0, 0);
bg.loadImage('images/bg.jpg');
...

DestroyByContact脚本

  该脚本控制游戏中一些对象的销毁工作,playerExplosion为飞船爆炸时触发的特效,score为积分,gameController为GameController 对象。

 1 public GameObject explosion;
 2     public GameObject playerExplosion;
 3     public int score;
 4     private GameController gameController;
 5 
 6     void Start()
 7     {
 8         GameObject gameControllerObject = GameObject.FindWithTag("GameController");
 9         if (gameControllerObject!=null)
10         {
11             gameController = gameControllerObject.GetComponent<GameController>();
12         }
13         if (gameControllerObject == null)
14         {
15             Debug.Log("Can't fing 'GameController' script");
16         }
17     }
18     void OnTriggerEnter(Collider other)
19     {
20         if (other.tag=="Boundary")
21         {
22             return;
23         }
24         if (other.tag=="PlayerL")
25         {
26             Instantiate(playerExplosion ,other.transform.position,other.transform.rotation);
27             gameController.GameOver();
28         }
29         gameController.addScore(score);
30         Instantiate(explosion,transform.position,transform.rotation);
31         Destroy(other.gameObject);
32         Destroy(gameObject);
33     }

本文由全球彩票平台发布于全球彩官网下载地址Web前端,转载请注明出处:H5游戏开发,游戏开发

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。