Unity3d插件 - TopDown Engine 文档

Top Down Engine简介

文档什么的是没有的,官方貌似也不打算给,就是一个API官方网站

感觉像是国人做的,例子不少,就是不说明怎么用,反正源码都有了,自个看去

俯视角游戏有点过时,特别是地牢游戏,不过王者荣耀何尝不是俯视角游戏

融合了不少官方的插件,你懂的:“”就只是不是给程序员用的“”

Gameplay

镜头处理

Cinemachine 入门

不懂的可以看看链接,Unity Cinemachine插件全功能详解-CSDN博客

,具体就不多说了,下面说说实际使用中碰到的问题:

不得不用Anim选项,也要选择LookAt Target

有个黄色提示,建议如果不想,也可选择None,然后就就会发现nothing + 轨道会旋转到你怀疑人生,所以唯一的解决方法和最简单的实践就是选择“朝向目标”

如果想做自由镜头,个人觉得很多其他的Curvy插件或者是更好的选择

还有就是要控制摄像头,必须调整摄像头在轨道上的position, 默认是轨道Unit【0,1】,你可以真试试选这个,所以你又不得不选择Distince(世界单位)

后面又看了几个博客,清一色是朝向做动作的人物的,也可以说unity的需求摸得准,就不是给程序员用的

平移推轨如何实现

很多人都说通过position控制位置,实际上镜头就是会乱转,单个选项控制肯定不够的(但多个控制违反人性,1般人不能同时操作左右手,程序员写出的程序自然如此),实践后发现上下,或者左右的推轨就还是可以通过position(相对于轨道)控制,斜边,或者螺旋轨道就有问题(或者我这个非美术理解不了,或者美术并没有斜的推轨要求)总之,就是有点难搞懂什么情况会镜头乱转,什么时候又固定了

平移推轨也是通过,timeline的动态赋值 ,实现

2个镜头间的切换

主要通过timeline处理,也没什么好说的,没用过Flash,也总见过Flash怎么做的吧

Windows -> Sequencing -> Timeline

在这里插入图片描述

关于timeline的使用,参考自:这2哥们都写的挺好的了

timeline的简单用法

Unity2017中Timeline的简单使用方法-CSDN博客

timeline的动态赋值

【Unity】TimeLine&Cinemachine系列教程——动态赋值,我要打十个!_using cinemachine;-CSDN博客

真正的美工做动画

【Unity】TimeLine&Cinemachine系列教程——动作特写! - 哔哩哔哩

好吧,在仔细的看了一遍上面的链接

我给的建议就是,不要听别人的建议

若完全按上面2位哥门写的做,真正在大型项目里面,人多了很难用(而他们反而说这样更好),做做小项目还行,你想怎么做都行,协同就困难了

我这里也只是提出一些关键词,供大家搜索,并没有成熟的方案,(只是个人觉得官方的timeline很难用,cinemachine也很难用,功能多,稳定,但难用)

难学难精,都2020了,何必呢

TopDown Engine里面的一些特色镜头运用

一切的一切,都在细节里

关卡场景Tipmap生成

官方的Demo:KoalaProceduralTilemap  demo scene,扩展了 TTHelper那个工具,刚好就会生成打竖的第一个地图,正是我需要的,今年搞2D去了。。。

同样的,还是没有文档,网上找到的文档要不就只是翻译官方,要不就只是演示下TopDown游戏Demo,Tilemap 这个东西作为其他引擎的“王牌”工具,在Unity 好用的 Tilemap真的没有,也确实证明没什么卵用

自己开发一个也快,老规矩,我们直接看代码吧

代码

//功能不多,就一个 generator 功能,直接看该方法
		protected virtual void Awake()
		{
			if (GenerateOnAwake)
			{
				Generate();
			}
		}

		public override void Generate()
		{
			base.Generate();
			HandleWallsShadow();
			PlaceEntryAndExit();
			ResizeLevelManager();
		}

//明显是继承了 MMTool 的 Procedual 包(2个类)

(这个包还不是放在Editor 目录下的,就是直接拿过来用不知道会不会有权限问题)

//MMTilemapGeneratorEditor.cs
//几行代码写在一起,有些恶心,Inspector 效果也没有很好,主打就是一个代码“实用”
//其实这样的代码也是写的挺潇洒的
		protected virtual void OnEnable()
		{
			_list = new MMReorderableList(serializedObject.FindProperty("Layers"));
			_list.elementNameProperty = "Layer";
			_list.elementDisplayType = MMReorderableList.ElementDisplayType.Expandable;
		}
        
		public override void OnInspectorGUI()
		{
			serializedObject.Update();
            //写的有些“”复杂“”,先是排除了 gui layers属性
			DrawPropertiesExcluding(serializedObject,  "Layers");
			EditorGUILayout.Space(10);//空格(10)
			_list.DoLayoutList();//然后这里又,反而作一次 gui layers 
			serializedObject.ApplyModifiedProperties();//最后 ?? 确保(序列化的)属性能够正常“缓存”
            
			if (GUILayout.Button("Generate"))//生成按钮一个
			{
				(target as MMTilemapGenerator).Generate();
			}
		}

//就这一手 Unity Editor API ,遥遥领先,Unity领先虚幻或者COCOS,或者GODOT 10年以上。。。。怪不得这么有底气收人头税

//Unity 和Editor 都不开源,却有堪比开源智慧的整体架构,和兼容性;所以开元开源并不重要,关键在于免费吧,如果你想做到免费,做到每个人都用,产品就会越做越下沉(这是任何高层都影响不了的,除了这次人头税 by 2023 年

//如果你看懂上面代码最好,看不懂也没关系,下探代码发现
//关键在于属性:Layers
//而这个属性并不是数组,而是 More Moutain工作室自己实现的一个类
	/// <summary>
	/// A class used to display a reoderable list of MMTilemapGeneratorLayers
	/// </summary>
	[System.Serializable]
	public class MMTilemapGeneratorLayerList : MMReorderableArray<MMTilemapGeneratorLayer>
	{
	}

//还实现了 MMReorderableArray, 这就有点呕了,就不再 下探代码,有点晕

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值