这书不错,学习以下设计思路很好。
第零章
介绍了一些Unity基础。
camera控制:alt、ctrl + alt、F按键 的使用。
一个小例子不断polish的过程。
物理控制的经验:
1)避免漂浮感,调整物体大小(rigidbody 1.0 = 1米)或在PhysicsManager中提高Gravity的Y的绝对值(例子中为-20)。
2)固定高度的跳跃
float y_speed = Mathf.Sqrt(2.0f*Mathf.Abs(Physics.gravity.y)*this.JumpHeight);
v = sqrt( 2 g h )
第一章
卷动背景,移动攻击。
记下可以做成游戏的构思,说不定什么时候会用到。
无限循环背景,处理跟随物体移动过快问题。
根据摄像机位置找到n(整体背景的位置),直接用乘法来计算位置,无论多快的移动用这个算法3块背景就足够了!
这里讨论了两种四折五入的做法,对于负数结果是不同的。
Mathf.RoundToInt( vf );
Mathf.FloorToInt( vf +0.5f );
关于碰撞形状的选择。球和方形挤在一起时会发生位移,而方形和方形挤在一起时却确难的多发生位移。
球碰撞在侧视图中往往会有误差,认为能打到敌人的却没有打到。
加入高风险高回报的机制提高有趣性。这里用的是攻击距离,实际实现用的是发起攻击到伤害的时间。
“预判断”(碰撞体存在比动作稍长)机制让游戏更容易上手。
制作“攻击反馈”。先搞清player面向x正,y是上,z向里对应Vector3.right Vector3.up Vector3.forward。
按照一个轴旋转的Quaternion:
blowout_xz = Quaternion.AngleAxis(y_angle, Vector3.up)*blowout_xz;
=============================================================
Find References In Scene可以找到一个脚本在哪个gameobject上。
这个常见,do{ … }while(false)是一种goto,可以在里面写break。
2个scene,titlescene和gamescene。注意自己打开的是哪个。
AnimatedTextureExtendedUV利用texture的scale和offset实现帧动画,用于刀光的实现。
AttackColliderControl刀的碰撞球。
OnTriggerEnter和OnTriggerStay的区别。
CameraControl和玩家一起移动。
this.transform.position = new Vector3(player.transform.position.x + this.offset.x, this.transform.position.y, this.transform.position.z);
FadeControl动态加入的component算法,使用一个1x1纹理用于全屏淡出。
fader = gameObject.AddComponent();
FloorControl作者得意的无限背景。
GUIControl加入SceneControl处理gui部分,这个ui的弄法较老。
LevelControl生成怪物,这样的方式来初始化。这个类并不是继承monobehaviour所以不会做为组件使用。
this.level_control = new LevelControl();
this.level_control.scene_control = this;
this.level_control.player = this.player;
this.level_control.OniGroupPrefab = this.OniGroupPrefab;
this.level_control.create();
OniControl单个怪物控制。
OniEmitterControl最后结算时的怪物塔,就是简单的绑定了sphere的一些oni随机位置落下。
OniGroupControl怪物方阵控制。
OniStillBodyControl最后结算时的怪物塔。
PlayerControl控制玩家
ResultControl用于结算数据,这个在SceneControl里直接new出使用。
this.result_control = new ResultControl();
SceneControl场景控制模块,放在场景里的empty gameobject上。可以说是主模块。
除了主要的prefab(玩家