c#和unity开发愤怒的小鸟(1)

it2025-09-07  7

今天写一个愤怒的小鸟的初步,么玩过的可以去各大小游戏平台玩玩,用到的是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 <= 100) { transform.position = new Vector2(600,170); } } }

将代码拖入背景ui即可实现; 点击开始游戏按钮跳转第二个界面 即可实现界面跳转

第二步搭建选择游戏关卡界面和切换场景功能。 左下角的返回键和开始游戏按钮的跳转是一样的, 这里还是拖入选择关卡界面,不打对勾,隐藏界面,就等于显示开始游戏界面,可以去搜搜按钮跳转,这里就不详细讲了。

创建一个新的场景,开始写跳转场景代码

public class Skip : MonoBehaviour { // Use this for initialization void Start () { this.GetComponent<Button>().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<SpringJoint2D>(); Rb = GetComponent<Rigidbody2D>(); } // 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<SpriteRenderer>(); } private void OnCollisionEnter2D(Collision2D collision)//碰撞机制 { if (collision.relativeVelocity.magnitude > MaxSpeed)//通过速度来判断小猪受伤还是死亡 { bead(); } else if (collision.relativeVelocity.magnitude > MinSpeed && collision.relativeVelocity.magnitude < MaxSpeed) { render.sprite = hurt; } } public void bead()//小猪死亡播放动画 { 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); } }

小猪的组件

创建一个GameObject空物体,创建一个GameManager代码,代码如下

public class GameManager : MonoBehaviour { public List<Bird> birds; public List<Pig> 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.Count; i++) { if (i == 0) { 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 这样初步的愤怒的小鸟就差不多了,后续还会更新,望大家多多关注!!!

最新回复(0)