今天写一个愤怒的小鸟的初步,么玩过的可以去各大小游戏平台玩玩,用到的是c#和Unity开发。 我用的是Unity2018版。 下面是要用到的素材,把链接给大家:链接:https://pan.baidu.com/s/1oFXvnuIvdaB27Us_rPiLbg 提取码:n1fz 首先,创建游戏开始界面,使用UI搭建, 背景可以向后移动,起到无线循环的作用, 下面展示一些 背景移动的代码。
public class Move : MonoBehaviour {
void Update () {
transform.Translate(Vector3.left* Time.deltaTime * 100);
if (transform.position.x
// Use this for initialization
void Start () {
this.GetComponent().onClick.AddListener(OnClicke);
}
void OnClicke() {
SceneManager.LoadScene("Game");
}
}
将代码拖入需要实现跳转的按钮 这样就可以实现了。 第三步,搭建游戏界面,使用精灵,上面的素材直接拖入到资源板块即可; 先搭建这样的场景,开始操作写代码,使小鸟可以随鼠标拖拽、限制拖拽距离、弹弓划线 以及下一个小鸟上弹弓。
public class Bird : MonoBehaviour {
private bool isClick = false ;
private float maxDis = 1.5f;
public SpringJoint2D Sj;
private Rigidbody2D Rb;
public LineRenderer right;
public Transform rightPos;
public LineRenderer left;
public Transform leftPos;
public GameObject boom;
void Start()
{
Sj = GetComponent();
Rb = GetComponent();
}
// Use this for initialization
private void OnMouseDown()//鼠标按下
{
isClick = true;
Rb.isKinematic = true;
}
private void OnMouseUp()//鼠标抬起
{
isClick = false;
Rb.isKinematic = false;
Invoke("Fly", 0.1f);
right.enabled = false;
left.enabled = false;
}
// Update is called once per frame
void Update ()
{
if (isClick)
{
transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);//让小鸟被鼠标拖拽
transform.position += new Vector3(0,0, -Camera.main.transform.position.z);
if (Vector3.Distance(transform.position,rightPos.position) > maxDis)//限制拖拽距离
{
Vector3 pos = (transform.position - rightPos.position).normalized;
pos *= maxDis;
transform.position = pos + rightPos.position;
}
Line();
}
}
void Line()//弹弓划线
{
right.enabled = true;
left.enabled = true;
right.SetPosition(0, rightPos.position);
right.SetPosition(1, transform.position);
left.SetPosition(0, leftPos.position);
left.SetPosition(1, transform.position);
}
void Fly()//鼠标抬起,小鸟飞出
{
Sj.enabled = false;
Invoke("Next", 5);
}
void Next() {//将飞出的小鸟销毁,下一个小鸟上弹弓
GameManager._isstance.birds.Remove(this);
Destroy(gameObject);
Instantiate(boom, transform.position, Quaternion.identity);
GameManager._isstance.NextBird();
}
}
这个是小鸟需要添加的组件,弹簧组件框出来的两个需要大家去实验调试。 小猪的代码以及小猪需要的组件
public class Pig : MonoBehaviour {
private int MaxSpeed = 10;
private int MinSpeed = 5;
private SpriteRenderer render;
public Sprite hurt;
public GameObject boom;
public GameObject score;
public bool _isPig;
// Use this for initialization
void Start () {
render = GetComponent();
}
private void OnCollisionEnter2D(Collision2D collision)//碰撞机制
{
if (collision.relativeVelocity.magnitude > MaxSpeed)//通过速度来判断小猪受伤还是死亡
{
bead();
}
else if (collision.relativeVelocity.magnitude > MinSpeed && collision.relativeVelocity.magnitude
if (_isPig)
{
GameManager._isstance.pigs.Remove(this);
}
Destroy(gameObject);
Instantiate(boom, transform.position, Quaternion.identity);
GameObject go = Instantiate(score, transform.position + new Vector3(0,0.5f,0), Quaternion.identity);
Destroy(go, 1f);
}
}
小猪的组件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201022110729650.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ3NjA1MTEz,size_16,color_FFFFFF,t_70#pic_center)
创建一个GameObject空物体,创建一个GameManager代码,代码如下
public class GameManager : MonoBehaviour {
public List birds;
public List pigs;
private Vector3 originPos;
public static GameManager _isstance;
// Use this for initialization
void Start () {
_isstance = this;
Initialized();
if (birds.Count > 0)
{
originPos = birds[0].transform.position;
}
}
public void Initialized()
{
for (int i = 0; i
birds[i].transform.position = originPos;
birds[i].enabled = true;
birds[i].Sj.enabled = true;
}
else
{
birds[i].enabled = false ;
birds[i].Sj.enabled = false ;
}
}
}
public void NextBird()
{
if (pigs.Count >0)
{
if (birds.Count > 0)
{
Initialized();
}
else
{
}
}
else
{
//赢
}
}
// Update is called once per frame
void Update () {
}
}
主要代码差不多了,下面开始创建动画和裁剪图集 做完即裁剪完成,可自己调节裁剪模块。 做动画 按住Ctrl选择自己需要的图片,选择完毕后按住Ctrl拖入资源面板。 以方便管理创建动画文件夹放入; 打勾是循环播放,小猪死亡播放一次即可。 点击动画,按Ctrl+6,弹出动画管理面板 完成后创建一个新的文件夹,将动画拖入 得分图片直接拖出,放入文件夹。 爆炸动画代码
public class boom : MonoBehaviour {
public void Boom()
{
Destroy(gameObject);
}
}
细节可以私信我或评论,欢迎大家 愤怒小鸟(1.5): https://blog.csdn.net/m0_47605113/article/details/109379611 总代码链接:https://blog.csdn.net/m0_47605113/article/details/109441671 这样初步的愤怒的小鸟就差不多了,后续还会更新,望大家多多关注!!!
|