前言
今天又看了知乎,又看到了学习方法,里面提到意志力的重要性,以及有效学习的概念,我看到了里面说,写博客能增强我的意志力,所以我今天来将昨天的工作添加到博客,算一次积累,训练意志力的机会,以及熟悉Unity 3D的机会。
目录
- 1.昨天的遇到的问题
- 2.解决方案
- 3.自己的感悟
- 4.知识点的累积
1.昨天遇到的问题
昨天主要实现了road的自动产生,以及人物运动的碰撞机制,以及简单的UI的处理。主要的困难和时间都花在了第一个方面–road的产生。
2.解决方案
一. 自动产生road的实现方案
依赖GameController类,函数主要有initRoad()和ChangeRoad(),自定义公共变量1.RoadList
2.BarrierPosList(Transform) BarrierList(GameObject) 3.dictionary(sting,List)
initRoad() 实现功能,将每一条路的障碍重新生成,包括删除障碍,生成障碍。
public changeRoad() ,供外部的moveController使用,将路不断生成(将已有的路的位置往前移,形成路一直有的假象)
二. 任务的碰撞机制
使用Collider设置了路的边缘,设置了人物的Collider并且设置了rigibody但是,每一次碰撞由于物理的因素,人物总是会摔倒,考虑过设置人物,将rigibody的Kinematic打开,但是这样人物就不能被阻碍,直接会穿过物体。陷入了苦恼,后发现rigibody下有freeze选项,可以将旋转限制,问题解决~
3.自己的感悟
需要生成物体,如果新产生物体,则需要位置和物体本身GameObject,如果只需要物体,而物体一开始就生成好了,那只需要Transfrom不断改变物体本身就好了,字典是一个好的结构储存物体,但是直接使用Dictionary(GameObject,List(GameObject))这样太浪费空间了。
4.知识点的累积
1.Collider的形状,以及isTrigger选项的影响
2.Rigibody的基本属性,以及与Collider的互动
3.如何调用其他物体的公共方法,首先不需要去实例它,因为当脚本挂在物体上时,已经实例化,所以只需要使用应用,例子public GameController gameController;
4.物体的tranfrom.position.forward ,right,up 如果需要让物体移动可以使用这三个变量
5.Input.GetAxis(“str”);可以在Edit-》project setting-》Input找到·