Creator3d怎么使用2d元素,官方没设计有吗

游戏中经常用到3d和2d混用,比如3d角色,2d背景,或者一些建筑可以用2d表现,或者血条。但是目前creator3d还没有在3维空间使用2d的元素的做法。

先废话不说,看看unity3d是怎么做的,unity是自带有 2d Object组件的,比如Sprite组件,如下图。

除此之外还可以用ugui设置为世界空间的摄像头渲染,并指定给一个摄像头,这样3维空间也可以用ugui了,如下图。

目前creator3d和最新的creator2.3.3都没有3维空间使用2d对象的功能,只能3d的Plane和Quad组件,这样需要给每个2d图片做一个材质球,还要根据图片尺寸比例做拉伸,还要最致命一点就是对png支持不好,有些shader渲染不支持透明度,有些支持透明度的shader只支持渲染图片的一面,反转过背面就看不见图片了。

希望官方引擎大佬尽早考虑3d场景放2d对象的功能啊,可以参考unity的做法。

官方没人重视这个问题吗,这个功能对3D游戏很有必要的啊。玩家头顶加个血条进度加不了,或者加个名字跟随也做不了,加个2d背景也做不了,难道3d游戏就只有3d模型而已吗。


你都不看官方项目和文档的吗????

你说的都可以做阿。。。

难道真的用Plane和Quad这两个?

你可以看下坐标转换的这快,大部分像你这里要的 2d 的部分都可以通过 ui 来实现,2d 建筑,血条这些,如果你需要的就是 3d 血条话,也可以使用 quad 改 shader 里图片 uv 的方式来实现,3d 和 ui 是可以进行混排的

坐标转换,使用ui定位,做某些功能可以,比如血条。但是ui是优先渲染的,永远盖在最上面,如果和3d物体有深度交换,ui就做不了。只能用quad和plane,但是这两个做2d太弱了,编辑大量的ui不方便,因为每个图片都要单独做一个材质球。如果引擎方能引入unity的那个2d Sprite组件就方便很多了,2d对象当3d用,不用计算3d空间到2d平面位置的转换,因为2d对象处在3d空间中,这个2d对象还能在3d空间使用2d物理引擎。

:innocent:你这个所谓简单例子跟我说的根本不是一个东西,我说的是把2d对象放到3d空间,按3d空间的坐标运动,有远近关系,和3d对象有深度交互,相当于2d对象是只有一个面的3d物体。不是在3d空间的渲染上面盖一层UIcanvas,放几个按钮,贴几张图片。有空玩玩unity,看里面的UGUI和Sprite2d对象是怎么在3d空间里和3d对象交互的

看了,都没有我要的答案,我说的是2d对象在3d空间运行,如果2d对象比3d对象利摄像头近就是2d对象挡住3d对象,2d对象比较远的话就被3d对象挡住,离摄像头越远就越小,2d对象是一个只有一个面的3d物体。不是通过3d坐标转换成平面坐标,然后用UICavas里的ui对象做互动的做法,这个没深度交互,也没有3d坐标概念。如果一架3d飞机发射2d子弹,用ui还真做不了,这还涉及到3d碰撞。i

你说的billboard么

还有用Plane做2d对象是我最忍不住要吐槽的是

从正面看没什么问题

从背面看就什么也看不见了

摄像头一旦绕到Plane后面就是空白一片,对一些需要2d图片做3d对象的游戏根本就达不到需求。

来个最简单的说法吧,我有个空战射击游戏,为了节省资源和行能,角色用3d的,子弹数量太多,只能用2d。这时该怎么办,用CanvasUI做吗,首先需要转换3d空间坐标到平面,还有要涉及到和3d对象的深度交互关系。还有物理碰撞系统。ui根本做不了,只能用Plane和Quad了,但是这两个缺陷也很大,做个大背景,显示单面的血条没问题,要显示图片的双面就出问题了。例如3d场景里有个Plane做的2d路牌,正面可以看得见,绕后路牌后面就看不见了。

billboard是广告板的意思。始终朝向相机

看不到是正常的,游戏引擎一般都是单面渲染。你需要的是双面的shader

:joy:说到底还是要另外写shader,不能直接用plane等平面组件啊。没办法,只能自己写了

unity平面也是单面渲染呀,,,,

Unity的2d对象SpriteRender组件
显示图片正面


显示图片反面

其实就是希望引擎官方能出这样一个能放置在3d空间的2d对象,不用额外加材质球,有默认自带的。图片能按原始比例显示,不用自己拉伸。图片支持正反面渲染,有这样一个东西,3d里放置2d就方便很多了

SpriteRender 本身和写shader也没区别,目前这个情况不能期待引擎组很快做出来,只能自己实现了。
要加入SpriteRender 可能得 Creator2D和 3D合并后吧,因为2d系统不只是渲染,还要配套把2D碰撞体系给移进来。

还是用plane+广告板最实在