贪吃蛇食物的生成

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);
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值