【Unity官方教程学习记录】2D UFO tutorial
**
【Unity官方教程学习记录】2D UFO tutorial
Months ago, I just began learning Unity, still a novice. I decided to jot down some of the things I don't fully understand, though this isn't a comprehensive tutorial.
Introduction & Setup
1. Introduction to 2D UFO Project
2. Setting Up The Play Field

perspective透视摄像机
orthographic正交摄像机
Movement Basics
1. Controlling the Player

碰撞物体时都必须附加Rigidbody 2d组件,并搭配附加Collider2D组件以实现互动效果。
该系统分为三种主要类型:
1.Dynamic(动态)
此类型用于创建具有物理运动特性的物体,在受到重力和其他质量因素影响下移动,并能与其他所有刚体类型发生碰撞反应。
但需要注意的是:
(1)声明变量
private Rigidbody2D rb2d;
(2)获取组件
在Start()或Awake()生命周期中调用GetComponent ()方法获取相关组件。
注意:GetComponent方法会消耗内存资源并影响性能,请尽量减少不必要的调用。
rb2d = GetComponent<Rigidbody2D> ();
(3) 物体移动脚本
通过设置水平和垂直移动变量来使物体移动
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
rb2d.AddForce (movement * speed);
}
2.Kinematic:运动学
受到用户明确控制的移动,不受力或者重力的影响(不受物理引擎的控制)。并且不会与其他Kinematci或Static物体发生碰撞。
使用Rigidbody2D.MovePosition来移动
3.Static:静态
表示为无限质量、不可移动的物体。
只与 Dynamic 类型的Rigidbody 发生碰撞.
2. Adding Collision
Player:创建一个CircularCollider2D碰撞体
在DirectX的API中创建一个绑定于UFO(Player)的圆形碰撞体时,请仅指定圆心到边缘的距离即可设定其大小

Player的移动不需要重力,所以Gravity Scale设置为0

Background:将四个BoxCollider2D设为场景边界以限定Player活动范围。

3. Following the Player with the Camera
该字段返回物体在全局坐标系中的位置信息。同样地,通过将transform.position赋值为Vector3(0, 0, 0),可以使物体定位至坐标原点。
private void Start () {
offset = transform.position - player.transform.position;
}
private void LateUpdate () {
transform.position = player.transform.position + offset;
}
Collectable Objects
1. Creating Collectable Objects
Prefab 是一种资源类型,在工程管理领域可被视为一个模块或模板系统;它不仅能够在一个工程中灵活应用,在不同场景中也同样适用;此外在同一个场景下也能够多次重复使用以提高效率。
当prefab 发生更改时,在项目管理过程中所有相关的prefab 将随之受到影响并进行相应的更新处理
2. Picking Up Collectables
设置宝石在与Player碰撞时被消除的代码
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag ("PickUp"))
{
other.gameObject.SetActive(false);
}
}
当将\text{gameObject}的\text{isActive}()方法设为\text{false}后,则会导致该物体被禁用;如果随后试图将其设回\text{true}则代码无法运行。
3. Counting Collectables and Displaying Score
每当消费一个宝石时, 计数器数值递增; 然后在游戏界面中显式地显示Text字段. 必须注意将Text对象放置于脚本文件中, 由于新手往往会在这一操作上耗时很久.

Creating a Playable Build
1. Building our 2D UFO Game
当build出现错误时,在UnityEditor中进行建模会遇到编译器异常。此时,请检查代码位置以确定具体原因,并确保构建过程中的所有资源均位于工程或资产文件夹中。如果发现编译器异常,请确保构建路径正确,并尝试更换构建方法以解决问题。
