感觉有点过坏了,立帖为证提升自己
- 银河城
- 88Plane
- 文字练习
- 美术练习
- 程序练习
每周结束至少做一个,并且有点成果
同比放大移动速度除了可以用Vector2(xSpeed * param,ySpeed * param)以外,还可以用Vector2(xSpeed, ySpeed) * param;另外为了避免不同电脑的帧数差别导致的巨力,可以使用Vector2(xSpeed, ySpeed) * param * Time.deltaTime
用velocity做跳跃移动
跳跃的时候向量速度=向量速度.x , 跳跃速度
移动的时候向量速度 = 移动速度,向量速度.y
class默认不会被序列化,想要class显示的话需要using System.Collections.Generic;里面的 [Serializable],相应的,如果你的public了一个class,但这个class没有在inspector里面显示,那么就是因为你这个class没有被序列化,在对应class前面加[Serializable]就可以了
使用[SerializeField]强制将private的属性显示在inspector里
使用[Range(1,3)]控制某个值在inspector里面拖拽可以更改的范围(代码里不限制)
如果在使用动画的情况出现了某些操作上的bug,检查一下动画本身是否自带动作,导致动画动作覆盖了你的操作
移动除了使用路点移动以外,还可以使用贝塞尔曲线移动,以下是对贝塞尔曲线的解释和代码
//贝塞尔曲线解释:
//定一个0到1的比例t,n个点组成n-1条线段,然后求每段线段在比例t下的点的位置,如果求取后点的数目大于1,那么继续将它们按顺序组成线段,求取这些线段在比例t下的点位置
//然后t从0到1移动,就组成了曲线
//静态贝塞尔类的定义,用于计算
public static class Bezier
{
//定义GetPoint方法
//作用是获取一系列点依据贝塞尔曲线计算规则后,位于比例t的点
public static Vector3 GetPoint(Vector3[] points, float t)
{
//建立一个新数组,复制传入的数组后,使用Unity自带的插值算法,从第一个点开始,依次计算两点之间的插值点
//计算一轮过后,总共的点的数目就减少了1,重复此过程,直到只剩一个点,该点就是所有原始点连成的贝塞尔曲线在比例t下的点的位置
//然后返回这个点就行了
Vector3[] newPoints;
int pointsNumber = points.Length;
newPoints = new Vector3[pointsNumber];
//要用array.copy函数,否则的话就传了地址,会出bug
Array.Copy(points, newPoints, pointsNumber);
while (pointsNumber > 1)
{
for (int i = 0; i < pointsNumber - 1; i++)
{
newPoints[i] = Vector3.Lerp(newPoints[i], newPoints[i + 1], t);
}
pointsNumber -= 1;
}
return newPoints[0];
}
}
for(int i = animationCurve.keys.Length-1; i>-1;i--)
{
animationCurve.RemoveKey(i);
}
//然后这里是将贝塞尔曲线分为100段,算出每段的平均速度并将其添加到曲线上的代码,GetPoint方法的作用是传入一个三维向量数组和比例t,返回使用这个数组计算的贝塞尔曲线在比例t下的位置
for (int i = 0; i < 100;i++)
{
t = (float)i / 100f;
nextT = (float)(i + 1) / 100f;
length = (GetPoint(points, t) - GetPoint(points, nextT)).magnitude;
deltaTime = length / speed;
deltaSpeed = 0.01f / deltaTime ;
animationCurve.AddKey((float)i/100f, deltaSpeed);
if(i == 99)
{
animationCurve.AddKey(1, deltaSpeed);
}
}
[CustomEditor(typeof(MyWaveController))]
public class thisEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if (GUILayout.Button("按钮名称"))
{
//把要执行的内容写在这里
}
}
}
什么是二次元?只要幻想就是二次元?绘画和美术才是二次元?还是必须使用动漫表达技法创作出的内容才是二次元?当我们谈论“二次元”的时候,我们到底在谈论什么?
(中略)
在思考了很久之后,我认为二次元固然有表现上的特征要素,如漫画风、幻想风等存在,但更能体现二次元核心的内容其实存在于更深层,存在于幻想与现实的边界。
我认为,二次元的核心是通过幻想获得超越自身的体验(有时候将自身代入,幻想这个世界确实存在以拒绝现实)
在这里解释一下拒绝现实。与仅获得超越自身的体验不同,拒绝现实需要额外的条件,分别是【希望】某个特定的虚幻的世界存在、【认同】某些特定的角色存在于上述世界,【认同】上述角色有着人格存在并且能与世界发生互动,并【幻想】自身也扮演着某个角色,和上述认同存在的角色们发生互动,或是仅仅观察上述角色自身的互动。前三条是基本判定是否为拒绝现实,最后一条是如何拒绝现实(幻想虚幻的世界存在,或是幻想自己于虚幻的世界存在)
拒绝现实并不含褒贬意味,譬如绝大多数幻想创作时都必须要拒绝现实。唯有“明知这么做会导致坏的结果,且意志尚能克服坏选择,仍然选择了坏选择”的情况下才会含有贬义,也就是一般意义的“逃避现实”。更准确的说,上述“拒绝现实”应该表述为”将自己推离现实以进入想要进入的幻想世界”。
如果是“仅获得超越自身的体验而不拒绝现实”,那么实际上此人并不属于一般意义上的“二次元”。对他们来说看“二次元”相关内容和周末大家约好一起去看电影没有区别,看完了,为情节与人物回味一段时间,互相锐评两句吹吹比,然后继续该干啥干啥,享受生活。幻想行为被作为他们现实生活的调味品,而非临时逃离现实生活的途径。和一些人天生喜欢吃辣一样、这些人喜欢二次元,只是因为部分二次元的内容正好戳中他的爱好而已。毕竟电影很难拍各种五花八门的幻想情节,比如机器人天天到处乱飞打架的故事,但二次元可以。
这也是很多人明明表现出来就是个纯粹的二次元,看番一堆手办一堆海报一堆,但其他人一旦了解这个人的主要生活之后都会说他是个现充的原因。
但是,如果存在主动的“拒绝现实”,也就是此人真的是一个“二次元”……那么在完全念头通达前,他都会持续地被痛苦所困扰。这份痛苦分为几个阶段。
第零阶段是进入幻想并面对美好事物后,认为自身不配与之并列,产生的自惭形秽的痛苦。你进入幻想世界,以主角的身份和各式各样的角色发生交集,体会她们的故事。那么你在对幻想世界产生归属感,并且开始喜欢上这些美好角色的同时,必然存在的退出幻想的流程则会像一根刺一样,提醒你自己并不属于幻想世界。这时候就会产生一个问题:现实的你假如到了幻想世界,真的能成为那个被那些耀眼角色共同喜欢的主角吗?幻想世界的主角(你)具有这样那样的能力与性格,但现实的你则完全比不上(至少是自认比不上)。在纠结于自身的现实身份和幻想身份的情况下,你会被自惭形秽,或是自我厌恶的痛苦所困扰。(当然,如果具有比较强烈的自我则不会……而是会成为中二病)
实际上,很多人根本不会进入第零阶段,因为这纯度实在太高了。他们是真的很认真地在考虑自己配不配的问题,即使他们自己都有时候觉得有这样想法的自己实在是太蠢了。但,这一阶段的人非常有趣,也是非常可怕的一点,正是在这种纠结中体现的。
会考虑这种问题的人,不管他们嘴上怎么否认,潜意识仍然将幻想的角色当成和他等同的人——“那里一定有一个世界,生活着这样一群角色。她们有自己的喜好,自己的性格,自己的故事。在这个世界里,她们和我一样,都是确实地活着的人。”
……即使,这份人格是他自己赋予的。
这一阶段的读者拒绝现实的程度不低。他们会把幻想中的角色当成真实的角色一样对待,因此,他们也会受到很多人的不理解,也会说出一些看起来很逆天的发言(比如认真的说你这样对得起XXX吗,或者认真的说我干了XXX事情,对不起XXX了,没脸见她们了)。他们看故事的时候很容易情绪波动大,因为角色的故事对别人来说是故事,对他们来说则带有部分移情的感同身受。他们经常会体会到【他们自认为的】角色的快乐与痛苦,并在现实与幻想的对比中迷茫不定。
第一阶段是因明悟了幻想世界的虚幻属性,而产生的与现实割裂的痛苦。在反复穿过现实与幻想的边界后,你会意识到幻想终究不是现实,你所爱的角色不会是真实的具有人格的人,她们只存在于幻想世界里。但即便如此,你会仍然希望他们能在幻想世界里永远活着,能够在幻想世界中一直陪伴着你。
但是,做不到。
角色的鲜活仅仅停留在故事之中,停留在纸面或者动画未结束之前。当你结束阅读的时候,关于这个角色的一切就都结束了。她们不会再多说一句话,多做任何一件事,对你的任何行为作出反应。你只能重头再来一遍,在故事里,按照设定的剧本,用固定的反应,和她们做出这样那样的互动,和角色们再表演一场盛大的傀儡剧。而当故事走到尽头的那一刻,这些角色就被禁锢在了永恒静止的时间之中。像穿越千年,光鲜亮丽却毫无生气的琥珀一样,美丽又永恒……但那不是你想要的。
自然,处于这一阶段的你会费尽心力,有意识或无意识地尝试延续这些角色的鲜活,于是你会去找设定集、找二创,让角色继续“活”下去;或者紧紧握住创作还未完结,角色的故事还可能继续的希望,一直等着、等着。但,不管怎样,最终还是要面对幻想只能是幻想的无情现实。
所有被认可的幻想世界完全被禁锢在有限的对它的描述上,只有自己的想象才能将其无限,但任何一个将你推出幻想世界的行为都会提醒你这只是你的想象。你终将明悟和你和角色们实际上的联系,并没有你自己想象得那么紧密。即使再怎么爱角色,能抓住的也不过是空中垂下的蛛丝而已。
这一阶段的读者虽然承认幻境仅仅是幻境,但他们无法割舍幻境给他们带来的美好……也因此常常感受痛苦。
第二阶段是了解了创作过程后,无法继续对角色产生纯粹的喜爱,无法接受光鲜亮丽的角色背后的黑暗而产生的痛苦。
当你因为难度甚至运气被反复无意义拷打的时候,你很难将为你作战的角色和对游戏本身的怒气区分开。脾气上来的时候,你很容易骂一句“你TM怎么这么脆啊?”或者“你这时候给我不暴击?”。这种行为在PVP里面更为常见,尤其是你和对手采用了极其相似的阵容但你仍然输了的时候。
你很快就会发现你的怒气似乎发错了地方。于是你去论坛发帖,猛烈喷了一顿设计师,转头却又说自己的角色还是很可爱的。
但仔细想想就会发现这种言论有点奇怪。你喜欢角色,于是设计师创造的好的一面被你拿走,角色变成了只属于你的角色。你讨厌游戏体验,因此设计师就是混蛋,即使这些你喜爱的角色都是他创造的。可是,创造你喜爱的和你讨厌的东西的人,难道不是一个人吗?最少最少,难道不是同一个公司吗?
即使上述情况可以用好活烂活分开看来解释,但另一种情况,也就是同一个人创作出的同一个角色,在故事的前后期几乎是两个人:前期人人爱,后期突然就变成了个混蛋。大多数人只会觉得这作者写爆了,是能力不行。但,另一些人就会发表评论,将故事后期的角色切割走,只留下前期的角色。在她们还很可爱的时候,这些角色是我的。在她们“因为作者”变混蛋的时候,这些角色……仍然不属于作者,只是作者故意搞鬼而已。
他们为何会如此地执着于将角色的最终解释权握在自己手里这件事呢?为什么一定要将幻想和现实区分得如此泾渭分明呢?
当你真正思考创作的时候,立刻就会发现隐藏在你爱、或是爱你的角色的真相。角色存在的本意就是达成作者的目的(为了讨读者喜欢,为了挣钱等),属于“刻意营造的幻想商品”。角色本身并不纯粹。作者为了让你喜爱,为了让你讨论,为了让你阅读,为了让你掏钱。于是,角色必然要讨你喜欢,且只能讨你喜欢。
不讨喜的设定,不好看的设计,在一开始就会被废弃掉。即使角色终于能在故事里出现了,创造者们也会根据风向调整各个角色的出场机会。如果一个角色不被大多数人关注,那么很明显,调高他的出场机会后获得的收益是明显比不过人气角色的。所以,在游戏里,这些角色仍然有延续故事的可能,但我们都知道,在商业上,这些角色已经被判死刑了。
那为爱发电又如何呢?不好意思,这里才是切割角色的重灾区。为爱发电越纯粹,越意味着一意孤行,越容易整出大多数人不喜欢的活。只要故事还在被创作,你就逃不掉这个命运。
这一阶段的读者开始知道“自己喜爱的角色”完全是为了“让你喜爱”而创造出来的产品,你喜欢的事物完全不像你想象的那么纯粹。在她们诞生的那一刻起,便带有最重要的任务:好好在故事里表演,向你展现出最吸引人的特质,让读者尽量喜欢上她们,然后狠狠爆他们的金币。
在第三阶段中,读者走向了创作者,想要创作关于自己所爱的角色的,只属于自己的故事。不管别人怎么想,我创作的角色对我来说最为纯粹。你会借此离开原作创造出的功利角色的深渊,但随着创作的深入,却反而会慢慢滑向另一个深渊——虚无。
刚开始创作的时候很美妙。你会反复观看已有故事,回忆自己与角色相遇时候的感觉,想象着与角色互动时的样子,并在甜蜜的感情驱动下将只属于自己的角色故事写下,期望者更多人看。
如果没人看还好。如果不能坚持创作,那么也就到不了第三阶段了。在第二阶段,随着时间推移,很多人会掌握“无视”的技巧,以便让自己能纯粹地享受故事,享受和自己所爱的角色在一起的时光。但如果创作受到了欢迎,你也被鼓励,决定不停创作下去的话,那么有一个困难是必须要克服的:你的素材不是无限的,你很快就会感觉没东西可写了。
于是你开始找灵感,看资料,记笔记。看的资料越来越多,笔记越来越长,创作得越来越得心应手。你了解你所爱的角色的萌点,知道什么样的性格最适合,也知道用什么样的情节最能凸显角色。你继续写,继续写,却发现你看的资料记的笔记已经和你的角色完全重合了。你惊觉不对,抬起头,结果看到市面上早就已经被类似的东西所塞满。放一个记忆点,加一个萌点,再配一个能强化上述两点的性格,好了原创角色完成。黑长直,金马尾,眼镜娘,搞笑役,不管是什么只要能让人记住就行。你开始觉得好像其他角色和你爱的角色也没什么不同,除了名字和所在的世界背景也不一样,她们的性格,记忆点,甚至于情节,都是大差不差的。你发现工业流水线上的产物或是功力不够的你自己的产物,全部都是这种复制人一样的东西。只要这么做,就会有人看,只要这么做,就会有人喜欢,只要这么做,就能爆人家的米,引来更多的关注。角色对于你不再是纯粹的角色,而成为了你手中的工具。你技巧运用得越是熟练,你的创作目的性就越明确。
然后,你会发现你已经无法纯粹地欣赏一个角色了。你不可避免地带着有色眼镜去看角色。你发现不管大家怎么创作,好看的故事大多数必然有其定式,不按套路来的故事没几个好看的。你想逃开形式的桎梏,想逃开这一切,但你逃不开。你用你的技巧创作的故事受到了一致差评,大家都觉得你的故事落了窠臼。你随手发的癫却被一群人疯狂叫好,交口称赞,而现在的你根本不知道为什么。你觉得故事不是你的,角色不是你的,什么都不是你的。你想要什么就有什么,但你仍然觉得虚无,因为你同时失去了一切。
第四阶段的你则会更加现实。在明白了工业快餐产出的东西是如此惊人的一致后,你会对原来疯狂喜欢的东西快速失去兴趣,只是会偶尔翻一下,惊讶于我以前为啥居然会喜欢这种玩意。你逐渐对幻想失去兴趣,想要转向于现实,却发现你原本羡慕的,那些看起来非常活跃的交际花们,甚至比你更虚无。你至少知道有趣背后隐藏着的,令人不快的逻辑,而他们只是单纯的消耗着他们自己的生活。你发现他们对任何东西没有一个评价标准,甚至没有一个固定的价值观。抛开事实不谈,喜欢的东西就要全力夸赞,讨厌的东西就是要全力打倒。他们过着嘈杂而无趣的生活,自己却乐在其中。
有时候你也会羡慕他们,但冷静下来又会觉得这样的自己很蠢,很丢脸。你又回去看了之前你喜欢的角色们,发现这些角色至少比那些把无聊当作有趣来炫耀的人好得多。你开始又能欣赏一点以前喜欢的角色,但你始终逃不开一个问题:你无法抛开一切,像最开始一样纯粹地喜欢她们了。她们仍然是那么地令人喜爱,丝毫没变,但你变了。你继续玩之前喜欢的游戏,继续写之前常写的文,但这些东西对你来说更像一种习惯。你要这样做只是因为你觉得你也许应该这样做,或是如果你不这样做,也没别的什么好做了。
你终于意识到你的空虚不是因为幻想破灭的空虚,而是生活和情感上的空虚。你渴求不一样的生活但你做不到。你的生活一无所有。你过去的日子已经过去了不值一提。你现在的生活一成不变没有人关注。你也不知道你的未来会是什么样。你有过梦想,但现在已经基本放弃了,只是偶尔突然想到,感叹一下“我也有过这样的想法呀”然后把它们按下。
你发现不是你选择了二次元而是二次元选择了你。从一开始就只有这一个命运。
你变得不爱表达自己,即使你什么都知道。你知道你喜欢故事里的妹妹围着你转是因为你缺少关爱。你知道每次看完震撼人心的故事之后怅然若失的感觉是因为你生活的空虚。你开始附和一些烂梗,在无聊里找乐子。你逐渐能和人打成一片,但更多时候你则是什么也不干,什么也不想。你又开始羡慕之前的那些人,即使他们很蠢,他们的快乐好像也没有作假。他们不是痛苦的苏格拉底而是快乐的猪——你想着,但你连快乐的猪都做不了,你是想做快乐的猪而不得的猪,更加扯淡。
最后,你开始接纳和这种空虚。你发现只要能好好欺骗自己,生活总还是能过得下去的罢。你逐渐开始故意忽略掉背后的一切,只为了能重新享受故事本身。你避免去参与任何过于认真的讨论,而号召别人像你一样专心得享受故事,享受幻想世界里和那些你爱着,也爱着你的角色经历的一切。你看严肃二创,也看发癫,你都觉得很乐呵。你认为对故事性还是乐趣性的争论完全没必要。你能理解很多东西,很多人,但你只希望能安静地享受一切,即使这种享受并不纯粹。
你觉得你老了。
在第四阶段之后是什么这点暂且先按下不表,是不是觉得上面几种人非常有二次元的“味儿”?这也是我认为二次元的核心在于拒绝现实的原因。其实第四阶段基本就是那种一团和气的老二次元了,他们不喜欢看的坚决不看一点,喜欢看的也不会多么激动地讨论。好像对一切都不是特别在乎,但有时的意见又好像看得很清楚。
写到这里,突然觉得一首诗很应景,暂且附上:
少年听雨歌楼上,红烛昏罗帐。
壮年听雨客舟中,江阔云低,断雁叫西风。
而今听雨僧庐下,鬓已星星也。
悲欢离合总无情,一任阶前,点滴到天明。
那么,第四阶段之后呢?
“世界上只有一种真正的英雄主义,那就是在认识生活的真相后依然热爱生活。”
你觉得之后会是什么?
你所想所做所爱的一切真的没有意义吗?
正因为有虚无,所以存在才有意义。如果抛开存在,那么虚无就是完全。
你想逃避的生活可能没有你想的那么毫无作用。正因为它以这样的方式存在,因此你才能领略到常人无法获得的风景,获得独属于你的故事。
不管对象是谁,是什么,甚至是不是存在,爱本身就是最大的意义。
我知道这些角色不存在,也知道她们是为了爆别人的米而创造出来的,还知道她们非常工业化,凹人设凹标签凹这个那个的。但那又怎样?
我喜欢这样的角色。换个名字我喜欢,换个背景我还是喜欢,怎么着吧?
你要是只想说这堆屁话就赶紧滚边去算了。你的目的到底是为了揭露现实还是为了你那点可怜的优越感啊?
老子喜欢——关你屁事?
后记
起因是看到邮箱贴吧有8u发了个癫……就是纯度非常高的那种,有点现实和幻想区分不清,大致就是“真的爱上了一个不存在的人该怎么办”。我第一反应是“这也太二次元了吧……”,但后来一想,我为什么会觉得这非常二次元?我认为的二次元到底什么?于是就有了上文。
你看,真要认真思考的话这份爱非常奇怪,因为任何不存在的角色只有侧写。你可能知道她是个傲娇,性子别扭,责任感强,会帮你处理工作,有时还会训你……你看,这全部是角色的侧面。你所认知的角色本质就是这些侧面的集合体,证据就是以上内容我其实说的是黑猫,哈哈。
你知道如果你偷懒的话就会被说,连被说什么话你都能一字不差地复述出来。你当然知道,因为剧情就是这样的。但如果你对她说今晚我们一起去吃超辣火鸡面吧,她会怎么回应你能知道吗?你不知道,因为剧情没有写。你确实可以一遍遍的看剧情来让角色活过来,但在角色的各个侧面之间的缝隙里仍然是什么都没有。
所以你爱上的只是戳一下按固定流程复读一句台词的洋娃娃吗?你自然可以脑补出一百个符合设定的回应,但在这一刻,这个角色成为了你的一部分:你希望她这么回应,于是她就会这么回应。这个侧面的她完全由你的心意而动。她是她,她也是你。
你爱上的是你的幻想……这其中并没有第二人能插足之处。你其实爱上的是另一个自己,是你喜欢的另一个自己,是你想成为但没能成为的自己,是平行世界穿越而来的,有着你喜欢的样子,想要像你所期望地那样,温柔安抚你的自己。
你用你的幻想来逃避现实。在另一个世界,你成为了完全。你可以成为任何你想成为的人,拥有任何你想拥有的感情。
你用这种方式和自己对话。你用这种方式治愈你。
这大概也是很多人不喜欢二次元的原因,因为看起来真的很傻……
不过我要说的是,逃避既不可耻而且还很有用。毕竟站着说话不腰疼的人没办法帮你承担任何东西。人家是嘴爽了,你自己回头一看处理自己生活的还是只有你自己。
我的意思不是只要逃避就好。单纯的逃避是一条死路,因为你毕竟没有活在幻想里面也没办法活。逃避是手段不是目的。
你过的是你自己的人生。你想做什么就可以做。你可以把角色当故事,可以把角色当作人,可以把角色当你自己。只有你才能为你自己的人生负全责。一件事让你感到不快,你就可以不做。让你开心,你就可以做。权衡情感与得失之后,选择你认为能做到的最好的方法去做就可以了。至于其他人,关他们屁事。
“He who has a ‘why’ to live for can bear almost any ‘how’。”
没有人是为了逃脱痛苦而活下去的。大家都是为了生活中各种各样美好事物而活下去的。
你爱角色,你需要角色,你把角色当成人即使你知道她们不是,你对角色的感情让你感受到被爱——这就已经很好了。如果这是你生活中的色彩,那就不要让别人夺走它。
……写的好长,完全成论文了都。干脆直接用大刘的一段话作为结尾好了——
“但是我喜欢上了一个不存在的人,她只是我虚构出来的,这难道不是一种病态?”
“不,不是,其实你很幸运,不管她是不是真实存在,能爱就很幸运了。”
做蛋炒饭的时候最好准备两个蛋,先打一个蛋做炒蛋,要炒得一块一块的,捞出待用。
然后做炒饭,记得和炒蛋一样,炒饭也是要多放油的。然后要多炒一会儿,把水汽蒸出来,让口感不粘,并且让饭粒不容易粘在一起。
再打一个蛋搅散,均匀地浇在炒饭上,趁没有凝固前快速翻搅均匀。这一步是为了上金黄色,并且让饭粒口感更弹。
饭粒表面的蛋液熟了后,加入之前的炒蛋,加盐调味,出锅。
这样做出来的炒饭又好看又好吃,还能吃到大块的蛋。
如果仅用炒好的蛋和饭一起炒,那么饭不会是金黄色。如果仅用蛋液炒,那么饭里只有蛋花,没有一块块的蛋。
游戏策划是设计游戏的人,所以并不是“喜欢玩游戏”就适合成为游戏策划的。只有喜欢玩游戏,喜欢思考游戏为什么要这么做,同时还抱有想要创作游戏给其他人玩的心态的人才适合做游戏策划。
游戏策划关注点相对于玩游戏本身,更在于游戏设计得好不好,也就是“要达成什么目的”,“采用什么方法”,“这些方法有什么优缺点”。即使一个策划干的都是非常事务性的工作,也不能放弃对设计的思考。不管是什么策划,都一定要清楚自己在做什么以及为什么这么做。
严格来说,这些基本素质并不是判断一个人是否算是一个好策划的条件——而是判断一个人能不能够做策划的条件。只要算得上是一个策划,那么必然不能缺少以下素质中的任何一个。
职业素养
自从决定从事这个职业开始,你对自己的定位就不能是“游戏爱好者”,而必须是“职业的游戏设计者”。能力暂且不论,职业二字意味着你不能再随着自己的喜好来对待工作。也许有时候你会觉得派给你的工作很傻,很没意思,不想做,但你至少要把这件事给做到合格。如果上司给了你修改意见,即使你觉得这样做很蠢,那仍然也要做到合格。如果觉得公司不适应或者工作不适应没法待,可以随时离职——但在离职之前,你要对你手上的所有工作负最基本的责任,即尽自己最大努力让它们合格。
思考设计背后的逻辑
无论是在工作中还是自己玩游戏的时候,都要思考游戏为什么要这么设计,有什么优缺点,可以怎么修改。这也是游戏策划和一般玩家最大的不同。玩家知道他喜欢玩哪些游戏,但当他描述游戏好玩在哪里的时候,大多数玩家都仅仅会关注体验层,也就是“我玩的爽的时候,我的感受是什么”。游戏策划则应当想得更深,也就是“游戏做了什么让我有这种感受”。思考“为什么要这样做”是学习游戏设计最快的方法,也是游戏策划不可缺少的素质。
兼收并蓄,求同存异
创作者如果对自己的作品没有自信,那他就不可能成为创作者。但在工作中,一个一意孤行的人不仅处理不好与同事的关系,也有可能导致很严重的后果,甚至导致项目整体停摆(现成的例子,少女前线2……)
游戏策划更应如此。不懂得听其他人意见的人,只会做出只有自己喜欢玩的游戏。
在工作中,要积极表达意见,但也要包容别人的意见,仔细思考做出取舍,和其他人充分沟通,讨论完成后,听从最应该对此事负责的人(也许是你自己!)的意见行动。
很多人对游戏策划这个职业有一种常见的理解:游戏策划就是满脑子想一些有的没的,大致描述一下,写成文档之后叫程序做,完事!
但实际上,策划打交道最多的东西反而不是策划案,而是表格。
注意,游戏是由一系列数据构成的。如果没有数据源,那么游戏就没办法称之为游戏。在写完策划案之后,更多的时间将会被用来完善体验与验收游戏表现,很多策划戏称自己为填表工具人就是因此。所以策划应当熟练使用Excel。
另外,同样常做的事则是跟进,也就是你需求提完发给程序后,确认并保证程序按时按质做完的整个行为。这也是主催为什么叫主催,是因为真的很能催……
整体来说,策划的工作内容就是写策划案,维护表格,以及跟进和汇报进度。
策划案
说一下最容易出现的误解。策划案实际上是给程序、美术等需求下游人员看的,而不是给策划自己看的。因此,你的策划案至少需要具有可执行性,而不是仅仅你的思路文档。这也是我建议策划都应该学一点程序的原因。你得知道你写成什么样,程序才能知道该怎么做,不过于简略也不过于详细。
你写的策划案,其实是程序的工作任务说明书。一定要认真对待它们。
维护表格
合格的策划可以单从表格设计上就看出很多东西,不过作为萌新,只要知道Excel的基本操作、公式以及数据类型就可以了。
注意,维护表格的时候千万记得写字段注释,否则的话这表格离了负责人没人能接手得了,或是要花费大量时间和程序对清楚了才能交接。
可以把“维护表格”的行为理解为“面向Excel编程”,哈哈。
跟进以及汇报进度
是很多人容易忽略的一点,但其实是策划最核心的技能了。如果你不会跟进,不好好跟进,那你就必然没有任何产出,因为你把是否能产出合格的成品这件事完全赌在了程序一个人身上。程序只有跟你有足够的默契,给你排足够的时间,并且对你的需求有足够的职业素养的情况下才能按时做好功能,就这还不能保证有没有bug。
因此,一定要常常跟进进度和汇报进度。
锚点可以理解为图片的四个角到其对应锚点的距离始终不变。图片右上对应锚点右上,等。
锚点会显示各锚点相对于屏幕的占比。这意味着当改变屏幕分辨率时,锚点也会按照对应百分比改变。如一个50%,30%,20%的锚点,当拉长100像素时,从左到右的两个锚点会向右移动50像素和80(50+30)像素。可以利用这个预想分辨率改变后的情况。
public Transform target;
public Vector3 axisY = Vector3.up;
void Update()
{
Vector3 dir = target.position - transform.position; //指向目标物体的向量
Quaternion ang = Quaternion.LookRotation(dir, axisY); //让物体看向上述向量方向。如果省略axisY,那么值默认为Vector3.up
//具体实现方法是首先令物体z轴朝向dir,然后根据dir和axisY做乘法求出向右垂直于dir和axisY两向量形成的平面的向量,作为物体的x轴,然后用z轴和x轴再来一次求出y轴。
transform.rotation = ang;
}
使用
public class UIDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
然后再分别实现
public void OnBeginDrag(PointerEventData eventData)
OnDrag
OnEndDrag
就可以完成一套拖拽流程了。
之后给塔基座添加射线碰撞检测
if (Input.GetMouseButtonDown(0))
{
if (EventSystem.current.IsPointerOverGameObject() == false)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("Towerbase"));
if (isCollider)
{
//hit.collider.GetComponent<xxx>();
}
}
}
再加入鼠标移上去变色效果和建造功能
void OnMouseOver()
{
if (Level_GlobalVariable.CAN_BUILD == true)
{
myRenderer.material.color = Color.red;
if(Input.GetMouseButtonUp(0))
{
if(isBuilded == false)
{
Instantiate(tempTower,transform.GetChild(0).transform.position,Quaternion.identity,transform);
isBuilded = true;
}
}
}
else
{
myRenderer.material.color = Color.white;
}
}
void OnMouseExit()
{
myRenderer.material.color = Color.white;
}
上面的全局变量是只在当前场景使用的