Advertisement

【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

Rigidbody组件设置

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中进行建模会遇到编译器异常。此时,请检查代码位置以确定具体原因,并确保构建过程中的所有资源均位于工程或资产文件夹中。如果发现编译器异常,请确保构建路径正确,并尝试更换构建方法以解决问题。

全部评论 (0)

还没有任何评论哟~