1.关于刚体碰撞
刚体碰撞分为OnCollisionEnter()方法和OnTriggerEnter()方法,其中:
- OnCollisionEnter()方法必须满足以下条件:
- 碰撞双方都必须带有碰撞箱,而且碰撞主动方必须带有RigidBody组件
- RigidBody组件必须不勾选Kinematic属性
- 双方都不能勾选IsTrigger属性 - OnTriggerEnter()方法必须满足以下条件:
- 碰撞双方都必须带有碰撞箱,而且碰撞主动方必须带有RIgidBody组件
- RigidBody可以不勾选Kinematic属性
- 被碰撞方必须带有Istrigger属性
2.关于协程
协程Coroutine的进程一般是一个返回值为IEnumerator的函数,在执行完一个循环后执行yield return 操作。需要调用一个协程时,不能直接调用该函数,而需要使用StartCoroutine()方法。当需要中断一个协程时,在协程内部使用yield break;
3.关于Input类
Input类含有许多关于处理鼠标和键盘输入的方法和属性,包括进入,退出,悬停,点击,松开等等。如果使用键盘输入,输入Input.Getkey查询相关方法。如果使用鼠标输入,使用Input.GetMouse查询相关方法。同时Monobehaviour类也提供了OnMouseDrag(),OnMouseDown()和OnMouseUp()等方法,这些方法都伴随FixedUpdate()进行。
4.关于git
本次版本管理使用Github Desktop管理,但是由于校园网等问题导致配置git花费了不少的的时间,比如处理分支冲突的问题花费了不少时间,一般遇到这种情况可以直接使用Stash changes或者直接Discard,或者直接手动删除(换到别的目录也可)冲突的文件然后git reset --soft(hard) HEAD~n也可。如果实在无可奈何了,可以使用最终大法删库然后重新git clone。
总而言之,在push之前可以先commit保存进度,然后必须pull一下获取进度,如果出现了冲突请在本地手动处理,不要把conflict带到git。
5.关于Transform类
Transform类描述了对象的平动和转动两类,其中关于旋转的描述,因为Rotation传入的是一个四元数,所以和场景里看到的三个参数不一样,在获取参数时应该使用.EulerAngle属性。同理,在更改rotation和position属性时修改单一坐标值是不应该的,应该传入一个新的Vector3类(Quaternion类)
6.总结
本次GJ未能达成既定要求是有原因的。没有实现单个物体的高内聚低耦合是一个很重要的原因,这使得代码拖沓而且可读性大大降低了,维护比较困难;另外,策划的需求相对过多也是一个原因,程序人数过少了,而且没有可以套用的写好的代码;最后则是和美术工作对接的不成功,应该尽早实现和美术的对接,应该是:美术画出的作品立刻套用到场景中,可以及时发现问题,减少后期修改代码的时间。
期待下次GJ能取得更好的成绩!