unity3D做2D小游戏飞机大战

本文档详细介绍了使用Unity3D创建2D飞机大战游戏的步骤,包括飞机、子弹、敌机、敌人子弹、爆炸效果、撞击检测、背景、音效和菜单的实现。并提供了自绘像素图片的链接以及项目源码下载。
摘要由CSDN通过智能技术生成

**~~

一.飞机

~~ **
在这里插入图片描述

在Assets下面右键Create新建flot命名为Scenes,在右键Create新建Scene命名为MainScene,选中它,点击Create->UI->Canvas
在这里插入图片描述
设置为2D,16:9的画面大小
在这里插入图片描述
在这里插入图片描述

Canvas下面新建text命名为Jet
在这里插入图片描述
这里是已经完成的项目,已经删除了text组件,添加了Image组件
在Assets下新建Flot文件命名为Script。再右键Create新建C# Script文件命名为JecControlScript。双击打开
在这里插入图片描述
当然,有可能是打不开,需要安装Visaul Studio,还需要在Unity中配置一i下
在这里插入图片描述
Edit->Preference->External Tool打开visul studio的exe文件
在这里插入图片描述
JecControlScript代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class JecControlScript : MonoBehaviour {
   
    //RectTransform引用,
    RectTransform rectTransform;
	// Use this for initialization
	void Start () {
   
        //当对象被放入内存调用
        rectTransform = GetComponent<RectTransform>();
	}
	
	// Update is called once per frame
	void Update () {
   
        Move();
	}
    void Move() {
   
        float x_speed = 0;   //横轴速度
        float y_speed = 0;   //纵轴
        if (Input.GetKey(KeyCode.A) == true
            && Input.GetKey(KeyCode.D) == false) {
   
            x_speed = -300;
        }
        else if (Input.GetKey(KeyCode.D) == true
            && Input.GetKey(KeyCode.A) == false)
        {
   
            x_speed = +300;
        }
        if (Input.GetKey(KeyCode.W) == true
            && Input.GetKey(KeyCode.S) == false)
        {
   
            y_speed = +300;
        }
        else if (Input.GetKey(KeyCode.S) == true
            && Input.GetKey(KeyCode.W) == false)
        {
   
            y_speed = -300;
        }

        //上下左右斜向的速度一样
        if (Mathf.Abs(x_speed) > 1 && Mathf.Abs(y_speed) > 1) {
   
            x_speed *= Mathf.Sqrt(2) / 2;
            y_speed *= Mathf.Sqrt(2) / 2;
        }
        //取出飞机的当前位置
        Vector2 position = rectTransform.anchoredPosition;
        //修改x坐标
        position.x += x_speed * Time.deltaTime;
        position.y += y_speed * Time.deltaTime;
        //限制x,y的范围,避免超出屏幕
        position.x = Mathf.Clamp(position.x, -360, 360);
        position.y = Mathf.Clamp(position.y, -500, 500);
        //位置修改后再放回去
        rectTransform.anchoredPosition = position;

        
    } 
}

写完后保存回到unity将JecControlScript拖到Jet上面去
在这里插入图片描述
双击Jet看到JecControlScript组件已经添加到里面了在这里插入图片描述
新建img文件夹放图片和音效
在这里插入图片描述
可以直接将图片从其他文件夹拖入这里面,单击图片设置成如下样式,并Apply
在这里插入图片描述
在Add Component中搜索Image Source,添加,然后点击Source Image最后面的圆圈选择图片,将飞机图片添加进去。
在这里插入图片描述

二.子弹

在Canvas下面新建Create Empty命名为BulletsManager在新建text命名为Bullet
在这里插入图片描述
在这里插入图片描述
BulletsManagerScript

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BulletsManagerScript : MonoBehaviour {
   
    public GameObject originBullet;                 //原始的一发子弹
    public RectTransform rectTransform;             //飞机的位置
    List<GameObject> list = new List<GameObject>(); //装子弹

    AudioSource audioSource;                        //音频组件

    //返回所有子弹
    public List<GameObject> GetList()
    {
   
        return list;
    }

    // Use this for initialization
    void Start () {
   
        audioSource = GetComponent<AudioSource>();

        for (int i = 0; i < 50; i++) {
   
            GameObject bullet = Instantiate(originBullet);
            //将复制的子弹添加到父对象
            bullet.transform.SetParent(this.transform);
            //恢复原始比例
            bullet.transform.localScale = new Vector3(1,2,1);
            list.Add(bullet);
        }
    }
	
	// Update is called once per frame
	void Update () {
   
        //发射子弹
        if (Input.GetKeyDown(KeyCode.J) == 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值