ローリンガール

——我翻滚也要翻滚到你的面前。

mikuRunFast

《RollingGirl》,堂堂立项 绝对不咕

Step1:找个模型

google输入miku模型,随意挑一个喜欢的就好。

Step2:弄进CC里边去

这部分挺扯淡的,因为能找到的miku模型好多都是mmd的,这时候有一大堆问题需要处理的。最后放弃了,即使是最简单的YYB Hatsune Miku_default_3 都有80M+的体积,面数还死多。行,那我就自己做一个吧。

Step3:自己设计一个Q版miku

打开体素工具MagicaVoxel,开干。

经过一系列的拙劣的模仿,终于弄出来一个像样的……fufu?

mikuRunFast

mikuRunFast

源文件也放出来供各位使用吧。

Step4:先弄进Unity里边去

怎么弄呢?很简单,直接导——个鬼哟,还要绑骨骼刷权重呢。这时候就应该使出钞能力。
购买这个插件voxel-importer,至于插件,还是自己购买吧。我就不分享了。
然后就是按照教程一步一步生成,绑定骨骼,刷权重。(这两头发刷起来真恶心)
然后记得先保存成预设,这时候就可以使用unity的插件导出FBX。

Step5:新问题,texture2d是什么东西?

emmm,cc不支持texture2d格式啊,那么写个代码转一下吧。

Texture2D_IMG.cs
using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; public class Texture2D_IMG : MonoBehaviour { public Texture2D texture2D; string path = ""; void Start() { saveTexture2D(texture2D); } public void saveTexture2D(Texture2D texture) { path = AssetDatabase.GetAssetPath(texture); if (!string.IsNullOrEmpty(path) && File.Exists(path)) { path = Path.GetDirectoryName(path); } else { path = Application.dataPath; } byte[] bytes = texture.EncodeToPNG(); Debug.Log(path); string name = texture.name; // UnityEngine.Object.Destroy(texture); System.IO.File.WriteAllBytes(path + "/" + name + ".png", bytes); Debug.Log("write to File over"); UnityEditor.AssetDatabase.Refresh(); //自动刷新资源 } }

然后把导出来的图片丢进PS里边,选择图像-图像大小-硬边缘,并且放大一点。虽然说有误差,(有些边缘被不正常地放大缩小了,但是起码不模糊了)

Step6:好的,现在准备一下动画

直接去mixamo白嫖就好,记得挂梯子。
如果提示失败什么的,多上传几次fbx模型就好。
PS:下载动画的时候选择without skin。
然后就是导入unity,放好并且编辑好动画(其他编辑器太烂了。)
然后重新导出为FBX。

mikuRunFast

Step7:导入到CC

这一步很简单,但是我不了解CC,还是先去看一遍文档吧。
好,看得我一头雾水,顺带学习了一下TS的非空断言

function isValid
function isValid<T>(x: T): x is NotNil<T> { return x !== undefined && x !== null; } function test(y?: string): string { if (isValid(y)) { return y.toLowerCase(); // 此时 y 不会提示报错。因为被 isValid 断言非空 } return ''; } type NotNil<T> = T extends null | undefined ? never : T

链接
cc 和 laya区别挺大的,但是cc似乎比laya好很多很多。
加把劲,我今天也要学习cc
cc这边的加载,一时半会没理解。确实比较蛋疼的。
折腾了下,添加了页面管理器,加载器什么的写到一半写不下去了。
然后还添加了miku。
可能miku后面还要更改,因为没有表情。
顺手做个gif

mikuRunFast

然后写了一堆工具,一堆脚本,当前只是暂时把主角放在了主界面,并且展示了出来。

目前来说,遇到了一些别的问题。

Step7:算法以及设计

就当前代码的实现上面,目前没有大问题,都是需要时间实现,当前的需求是一种算法,用以随机生成迷宫。
当我看到网上各种复杂的算法时候,我又想到另外一件重要的事情,游戏的具体玩法是什么。
对,游戏的具体玩法并没确定下来,我只是确定了核心玩法,仍旧需要扩展。
这时候需要一个头脑风暴,以及……设计思路。
我暂时没有,我觉得我需要去看看视频。
勉强对着格式写了份策划案,果然,写策划案的时候又冒出了挺多灵感,暂时制定了一份策划案,虽然看起来不怎么成熟,但是起码对于我个人来说,是更加清晰未来游戏需要做什么了。
依旧对地图生成算法这块头疼啊。
在问题解决之前,估计项目要搁置很久了。

Step8:设计迷宫算法

花了点时间,看了下迷宫算法的原理。

然后在unity里边实践了一下。

首先尝试了递归回溯算法,小型迷宫看起来还成,在生成大型迷宫的时候就很扯淡了。

接下来实现了一遍prim算法,效果拔群,于是重写了一次。算是“看起来”比较好看。

迷宫算法是写好,接下来要生成我需要的地图,还要写各种判断,也很恶心。

题外话:总有人说,不要造轮子,那是在项目赶进度/你有能力造轮子的情况下才这么说的,很明显,没人催我进度,我也乐得研究下轮子怎么造。

这也算我的优点之一:有旺盛的好奇心,从而能看透很大一部分表象的本质。

古琴《半山听雨》 海阔天空