using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class foodmake : MonoBehaviour
{
public GameObject foodPerfatic;
public GameObject foodReward;
int xlimit, ylimit; //食物生成的位置的限定值
int xoffset; //由于地图的横向位置不对称所以会有一个偏移量。
int x, y;
Transform canvas; //获取画布以便设置父对象
public Sprite[] foodSprites = new Sprite[10];//食物的种类的照片
//单例模式
static private foodmake _instant;
static public foodmake Instant
{
get { return _instant; }
}
private void Awake()
{
_instant = this;
canvas = GameObject.Find("Canvas").transform;//获取名字为Canvas的组件
}
void Start()
{
ylimit = 7;
xlimit = 8;
xoffset = 8;
CreatFood();
}
// Update is called once per frame
public void CreatFood()
{
x = Random.Range(-(xlimit - xoffset), xlimit) * 30;//Random.Range是前开后闭区间
y = Random.Range(-ylimit, ylimit) * 30;
GameObject food = Instantiate(foodPerfatic);
food.transform.SetParent(canvas, false);//设置生成食物的父对象,并使它保持未设置父对象之前的状态(缩放,旋转,坐标等值不变)
int index = Random.Range(0, foodSprites.Length);
food.GetComponent<Image>().sprite = foodSprites[index];//设置食物的图片
food.transform.localPosition = new Vector3(x, y, 0);
bool isnoreward = Random.Range(0, 100) < 20 ? true : false;//设置有1/5的概率生成奖励
if (isnoreward)
{
x = Random.Range(-(xlimit - xoffset), xlimit) * 30;
y = Random.Range(-ylimit, ylimit) * 30;
GameObject reward = Instantiate(foodReward);
reward.transform.SetParent(canvas, false);
food.transform.localPosition = new Vector3(x, y, 0);
}
}
}