水果预制体的制作:
1、 新建文件夹fruit
2、 创建11个2D Object sprite,并更改贴图
3、 添加collider,添加刚体,以便于在脚本中通过碰撞事件检测碰撞
4、 新建fruit脚本如下,并添加到每一个水果上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum FruitType
{
One=0,
Two= 1,
Three = 2,
Four =3,
Five =4,
Six = 5,
Seven = 6,
Eight = 7,
Nine = 8,
Ten = 9,
Eleven = 10,
}
/// <summary>
/// 默认Ready
/// 创建出来待命的时候以及鼠标控制移动位置时候,StandBy
/// 跌落,Dropping
/// 碰撞到地板或者其它水果,Collision
/// </summary>
public enum FruitState
{
Ready = 0,
StandBy = 1,
Dropping = 2,
Collision = 3,
}
public class Fruit : MonoBehaviour {
//Unity,在脚本中Public的变量或者参数,可以在Unity引擎,Inspector检查器视图中可视化的修改
public FruitType fruitType = FruitType.One;
private bool IsMove = false;
public FruitState fruitState = FruitState.Ready;
public float limit_x = 2f;
public Vector3 originalScale = Vector3.zero;
public float scaleSpeed = 0.1f;
public float fuirtScore = 1f;
void Awake()
{
originalScale = new Vector3(0.5f,0.5f,0.5f);
}
// Use this for initialization
//在游戏对象启用的时候,调用一次
void Start () {
}
// Update is called once per frame
//更新方法,每帧执行一次,每帧的时间可以设置Time.deltaTime
void Update () {
//游戏状态StandBy&水果状态StandBy,可以鼠标点击控制移动,以及松开鼠标跌落
if (GameManager.gameManagerInstance.gameState == GameState.StandBy && fruitState == FruitState.StandBy)
{
if (Input.GetMouseButtonDown(0))
{
IsMove = true;
}
//松开鼠标
if (Input.GetMouseButtonUp(0) && IsMove)
{
IsMove = false;
//改变重力,让水果自己掉落
this.gameObject.GetComponent<Rigidbody2D>().gravityScale = 1.0f;
fruitState = FruitState.Dropping;//Fruit Step 2
GameManager.gameManagerInstance.gameState = GameState.InProgress;//Step2
//创建新的待命水果
GameManager.gameManagerInstance.InvokeCreateFruit(0.5f);
}
if (IsMove)
{
//移动位置
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);//屏幕坐标转换成Unity世界坐标