使用PlayCanvas制作一个简单的小游戏(二)
原文:http://developer.playcanvas.com/zh/tutorials/beginner/keepyup-part-two/
设置材质
在这个游戏中,我们尽可能的使用了简单的图形,所以没有过多的设置项。尽管如此,我们仍然需要为足球、背景和覆盖层设置材质资源。
什么是材质?
材质是Playcanvas中的一类资源,它描述了当三维模型应该如何在屏幕上渲染。材质决定了表面的颜色,并且决定了模型表面与光源交互的方式。举例来说,一块光滑金属的材质,还是粗糙的橡胶?PlayCanvas有一种内置的物理材质,可以满足你90%对材质的需求。随着您不断的进阶,您有可能需要使用GLSL着色器代码来创建您自己的材质。
Cubemap
在我们介绍材质之前,我们需要先设置cubemap资源。Cubemap是一种由立方体六个面上的6种纹理贴图组成的资源。你可以认为它代表了场景所在环境的最远点。PlayCanvas物理材质可以使用cubemap来实现基于图像的照明。它使用cubemap中的颜色为场景中的材质照明。比如,在我们的场景中,cubemap由蓝天和绿草地表面构成。因此,足球的上面将呈现蓝色,而下面则是绿色。
为了使用cubemap,先要在New Asset菜单中创建一个Cubemap资源,然后指定6个纹理贴图,对应cubemap的每一面。当cubemap的所有面都指定了纹理贴图后,点击Prefilter按钮。Prefilter对于cubemap的正常工作是必须的。
足球材质
足球是我们从PlayCanvas Asset Library上导入的三维模型。尽管足球材质一般已经为您配置好了,但您可能仍需做几处改动。让我们看看足球使用的各种映射map吧。
漫反射Diffuse
漫反射定义了表面的颜色。这里就是足球上的黑白色。
环境Environment
我们得先介绍环境,因为我们需要看看反射效果。环境设置可以通过将Cubemap资源拖拽到材质的cubemap槽上来完成。
反射Specular
反射部分的设置决定了材质如何与光线交互。有两种反射的工作流程,一种是“金属工作流”,另一种是“镜面反射工作流”,在文档中可以找到更多的相关信息。我们对足球使用金属,所以请勾选“Use Metalness”选项。由于我们的足球并不是金属做的,所以我们要将Metalness的滑块向0方向滑动。然后,使用反光滑块调整材质的光滑度。这里我们设置到大约中间的位置,这使得足球变得足够闪亮,其表面又不是完全的光滑。
法线(Normal)
我们使用的最后一种材质映射是法线映射。法线映射用来为模型增加更多细节。这样一来,足球上不同的小块无需单独几何建模(仍然是一个光滑的球体),而是在法线上映射。这意味着,只要这些小块存在,足球就可以正常的被照亮,而没有额外绘制多边形所带来的开销。
背景材质
背景材质相当简单,只有一个纹理映射。
自发光(Emissive)
自发光映射设置了表面的发光颜色,就像是那块区域发出那种颜色的光一样。这意味着,场景中的光源不会影响这个发光表面的亮度。注意,一个自发光的材质不会影响场景中的其他物体,因为实际上并没有光发射出来。
这种情况下,我们不希望静止场景的背景被照亮。所以我们使用自发光映射来达到这一目的。
覆盖材质(Overlay Material)
覆盖材质比背景材质还要简单,这里我们只需要在自发光属性中设置颜色即可。
使用PlayCanvas制作一个简单的小游戏(二)相关推荐
- 使用PlayCanvas制作一个简单的小游戏(一)
我们使用PlayCanvas做了一个"掂球"的小游戏,在这个小游戏中玩家需要点击落下的足球使之停留在空中. 本教程包含如下主题: 1 场景(Scene)和层级(Hierarchy) ...
- 使用PlayCanvas制作一个简单的小游戏(三)
原文:http://developer.playcanvas.com/zh/tutorials/beginner/keepyup-part-three/ 游戏脚本和输入 在场景的根实体Game上绑定了 ...
- 使用PlayCanvas制作一个简单的小游戏(四)
原文: 足球 足球是掂球游戏的焦点.它响应玩家的输入,响应环境(如重力),发出声音等.它也许是游戏中最复杂的部分.幸运的是,我们会尽可能的深入浅出. ball.js pc.script.attribu ...
- 用turtle库制作一个简单的小游戏《鸡子大战篮球》
刚上大学,学习python不到两月半,连简单的字典.元组数据类型都还没有捂熟.这不刚好python小组作业是用turtle库画自己喜欢的图案吗,在我们小组的努力下我们画好了5只小只因,于是我就大胆的进 ...
- Java制作一个简单地小游戏
package 代码部分; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import jav ...
- unity编写一个简单的小游戏
unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...
- 使用小程序制作一个飞机大战小游戏
此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...
- c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
- 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
最新文章
- 成功输出消息后的采购订单不能取消审核
- 启明云端分享| 基于ESP32-S2模块的彩屏86盒应用,有哪些亮点呢
- 模板:后缀数组(SA)
- 学习手记(2018.9.15~2018.11.10)——备战NOIP2018
- Java Message System简介
- 在域环境下搭建samba服务器
- 03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
- 华为全球第一、荣耀中国前二!余承东宣布新目标:苹果三星怎么看?
- Java 故障安全异常处理
- 赛尔号桌面版_赛尔号手游电脑版
- Nik Collection 5 Mac,最新PS滤镜插件套装
- 了解RecyclerView的分割线
- c# 使用谷歌身份验证GoogleAuthenticator的示例
- python发微信消息_利用python实现微信消息自动提醒
- 老站长心语:网站由小到大的建站经历
- Html--判断客户端类型
- UML一篇文章就学通!
- Frontiers | 北林邬荣领/何晓青-网络作图揭示拟南芥与叶际微生物组互作机制
- 学校计算机申请报告,【体育器材申请报告】_学校体育器材申请报告格式及范文...
- 你会copying了吗?(Effective C++ 12 复制对象时勿忘其每一个成分)