——我翻滚也要翻滚到你的面前。
《RollingGirl》,堂堂立项 绝对不咕
Step1:找个模型
google输入miku模型,随意挑一个喜欢的就好。
Step2:弄进CC里边去
这部分挺扯淡的,因为能找到的miku模型好多都是mmd的,这时候有一大堆问题需要处理的。最后放弃了,即使是最简单的YYB Hatsune Miku_default_3 都有80M+的体积,面数还死多。行,那我就自己做一个吧。
Step3:自己设计一个Q版miku
打开体素工具MagicaVoxel,开干。
经过一系列的拙劣的模仿,终于弄出来一个像样的……fufu?
源文件也放出来供各位使用吧。
Step4:先弄进Unity里边去
怎么弄呢?很简单,直接导——个鬼哟,还要绑骨骼刷权重呢。这时候就应该使出钞能力。
购买这个插件voxel-importer,至于插件,还是自己购买吧。我就不分享了。
然后就是按照教程一步一步生成,绑定骨骼,刷权重。(这两头发刷起来真恶心)
然后记得先保存成预设,这时候就可以使用unity的插件导出FBX。
Step5:新问题,texture2d是什么东西?
emmm,cc不支持texture2d格式啊,那么写个代码转一下吧。
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。
Step7:导入到CC
这一步很简单,但是我不了解CC,还是先去看一遍文档吧。
好,看得我一头雾水,顺带学习了一下TS的非空断言
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
然后写了一堆工具,一堆脚本,当前只是暂时把主角放在了主界面,并且展示了出来。
目前来说,遇到了一些别的问题。
Step7:算法以及设计
就当前代码的实现上面,目前没有大问题,都是需要时间实现,当前的需求是一种算法,用以随机生成迷宫。
当我看到网上各种复杂的算法时候,我又想到另外一件重要的事情,游戏的具体玩法是什么。
对,游戏的具体玩法并没确定下来,我只是确定了核心玩法,仍旧需要扩展。
这时候需要一个头脑风暴,以及……设计思路。
我暂时没有,我觉得我需要去看看视频。
勉强对着格式写了份策划案,果然,写策划案的时候又冒出了挺多灵感,暂时制定了一份策划案,虽然看起来不怎么成熟,但是起码对于我个人来说,是更加清晰未来游戏需要做什么了。
依旧对地图生成算法这块头疼啊。
在问题解决之前,估计项目要搁置很久了。
Step8:设计迷宫算法
花了点时间,看了下迷宫算法的原理。
然后在unity里边实践了一下。
首先尝试了递归回溯算法,小型迷宫看起来还成,在生成大型迷宫的时候就很扯淡了。
接下来实现了一遍prim算法,效果拔群,于是重写了一次。算是“看起来”比较好看。
迷宫算法是写好,接下来要生成我需要的地图,还要写各种判断,也很恶心。
题外话:总有人说,不要造轮子,那是在项目赶进度/你有能力造轮子的情况下才这么说的,很明显,没人催我进度,我也乐得研究下轮子怎么造。
这也算我的优点之一:有旺盛的好奇心,从而能看透很大一部分表象的本质。