最近看别人的视频,搞了一个捕鱼达人小游戏。感觉会作图挺重要的。
unity适配手机屏幕感觉很好,一行代码就行了
Camera.main.aspect = 1.67f;
这是生成鱼的代码,感觉这种小游戏,代码简单,就是切图做重复的事情有点难受
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using UnityEngine.SceneManagement;
public class CreatFish : MonoBehaviour
{
public GameObject[] Fishes;
public GameObject BigFish;
public GameObject BigGoldFish;
public GameObject SmallGoldFish;
//-----------------------------
private float BigGoldFishTime;
private float SmallGoldFishTime;
private float BigFishTime;
private enum FishInfo
{
Big,
Small
}
// Start is called before the first frame update
void Start()
{
//适配屏幕
Camera.main.aspect = 1.67f;
//每隔三秒创建一次普通鱼
InvokeRepeating("CreatFishes",1f,3f);
SmallGoldFishTime = Random.Range(30, 120);//30s-2分钟出现一次小金鱼
BigGoldFishTime = Random.Range(240, 480);//4-8分钟出现一次大金鱼
BigFishTime = Random.Range(180, 300);//3-5分钟出一次蓝色鲸鱼
}
/// <summary>
/// 创建普通鱼
/// </summary>
private void CreatFishes()
{
if (Fishes.Length > 0)
{
for (int i = 0; i < Fishes.Length; i++)
{
Vector3 vector3 = getRandomVector3();
GameObject fish = Instantiate(Fishes[i],vector3,Quaternion.AngleAxis(Random.Range(-30f,30f),Vector3.back));
}
}
}
/// <summary>
/// 创建金鱼
/// </summary>
/// <param name="fishInfo">创建大金鱼还是小金鱼</param>
private void CreatGoldFish(FishInfo fishInfo)
{
if (BigGoldFish != null && SmallGoldFish != null)
{
Vector3 vector3 = getRandomVector3();
switch (fishInfo)
{
case FishInfo.Big:
Instantiate(BigGoldFish, vector3, Quaternion.AngleAxis(Random.Range(-30f,30f), Vector3.back));
break;
case FishInfo.Small:
Instantiate(SmallGoldFish, vector3, Quaternion.AngleAxis(Random.Range(-30f, 30f), Vector3.back));
break;
}
}
}
/// <summary>
/// 创建蓝色鲸鱼
/// </summary>
private void CreatBigFish()
{
if (BigFish != null)
{
Vector3 vector3 = getRandomVector3();
Instantiate(BigFish, vector3, Quaternion.AngleAxis(Random.Range(-30f, 30f),Vector3.back));
}
}
/// <summary>
/// 获取随机坐标
/// </summary>
/// <returns></returns>
private Vector3 getRandomVector3()
{
//边界值 左-8.7 右8.7 上下+-5
float y = Random.Range(-4.9f, 5);
return new Vector3(-8.6f,y,0);
}
// Update is called once per frame
void Update()
{
//如果按下了返回键
if (Input.GetKeyDown(KeyCode.Escape))
{
SceneManager.LoadScene("main");
}
#region 在一定时间内创建金鱼
SmallGoldFishTime -= Time.deltaTime;
BigGoldFishTime -= Time.deltaTime;
if (BigGoldFishTime <= 0)
{
CreatGoldFish(FishInfo.Big);
BigGoldFishTime = Random.Range(180, 480);//3-8分钟出现一次大金鱼
}
else if (SmallGoldFishTime <= 0)
{
CreatGoldFish(FishInfo.Small);
SmallGoldFishTime = Random.Range(60, 180);//1-3分钟出现一次小金鱼
}
#endregion
#region 在一定的时间里创建蓝鲨鱼
BigFishTime -= Time.deltaTime;
if (BigFishTime <= 0)
{
CreatBigFish();
BigFishTime = Random.Range(180, 300);
}
#endregion
}
}
https://pan.baidu.com/s/1fiFiFOIXBmAjWlQPgIDMDg 提取码:us5q
这里是全部源码