写这个的目的是自己留着可以方便找内容……
所以要是有希望直接看着这个学的话很可能看不懂……
Roll-a-ball tutorial
https://unity3d.com/learn/tutorials/s/roll-ball-tutorial
1.1 Setting up the Game
新建工程 - 新建场景
F - 查看类似选中物体
不用担心投影,Unity自己会加投影
添加材质的方法
材质直接拖动扔到物体上
全局光照可以修改
1.2 Moving the Player
小球需要的运动是移动 和碰撞检测(捡起东西以及和墙的捧着) 所以需要物理属性的功能
physics - rigidbody
介绍了一下面板告诉你它是可以动的
两种新建script的办法,几种编辑script的办法
update()在渲染之前调用
fixedUpdate()在运行物理计算之前调用
help: search the unity API
快捷键 CTRL + ‘
Input.GetAxis(“Horizontal”)
在代码内创建对类的reference
Class Vector3: represent 3D space
链接代码
public value可以直接显示在外面板上
好的我瘠薄的线代知识不想去理解为啥是旋转而不是平移……
2.1 Moving the Camera
介绍了怎么让相机跟随物体的运动
一开始讲了把相机设置为物体的child
但是这样的话物体绕x或者y的旋转会造成相机的疯狂选择(绕z的看起来挺对的)、
所以要使用代码去控制位置
增加新的代码
Offset value 偏移量
这里设置用Lateupdate而不是update 他们俩个都每一step都用,但是lateupdate跑在update之后
2.2 Setting up the Play Area
简单来说就是 在周围加墙 防止求运动到平面外面
设置一个父类的墙 - Game object
增加cube 设置为子类(像拖到文件夹下一样)
Duplicate
在Local的模式下可以看到单个物体的运动情况
3.1 Creating Collectable Objects
隐藏物体
在update里添加旋转的代码
void Update ()
{
transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);
}
创建prefab
从object创建prefab再用它创建object。类似于模板的概念。
以Local或Grobal为基础的移动
3.2 Collecting the Pick Up Objects
碰撞trigger以及检测和谁撞
有一种别的方式进入目录
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag ("Pick Up"))
{
other.gameObject.SetActive (false);
}
}
以及设置Tag
结果上述代码 球依然会被中间拾取的物体撞开 仿佛那个物体是墙
于是增加对他物理系统的介绍
Ctrl 选中多个
display mesh render 然后会只显示 collider volumes
collision engine - 不允许多个 collider volumes overlap
static & dynamic 前者不允许被撞飞后者允许
trigger
最后还有一个问题是recalculate static colliders.
这里没看懂啊啥意思……没有很理解动态静态的区别 为啥这玩意要设成动态的呢……
(甚至觉得应该单独给它重新设个包围盒 不动的那种 免得转来转去运算麻烦)
(不过为了显示反正要算?……好吧)
所以大概是因为他是一个会动的吧
之前理解的动态是 一撞会被撞飞的 才叫动态……
Any game object with a collider and a rigid body is considered dynamic.
Any game object with a collider attached but no physics rigid body is expected to be static.
然后这里小哥哥把它变成动态之后直接被重力拖下去了
然后俩种方法一种是是把重力关掉 更好的一种是设置成Kinematic
Standard rigid bodies are moved using physics forces.
Kinematic rigid bodies are moved using their transform.
3.3 Displaying the Score and Text
记录分数并且显示
初始化在start函数中
ui - text
must be child of canvas
设置text的位置(这个按按应该就会了)
using UnityEngine.UI
public Text countText ;
然后在外面把counText这个UI拖到那个public里面当作reference(惊了可视化那么方便的吗)
过关提示
空白的时候是用空字符串
3.4 Building the Game
save scene - build setting
如果不插入scene in build会默认使用当前的场景