Unity学习笔记(1)飞机大战第一章「点击飞机射出子弹」「子弹超出屏幕外被摧毁」

一、效果图

大概的效果图如下,实现的功能:😁通过点击鼠标飞机会射出子弹,若子弹超出屏幕外会自动销毁。

在这里插入图片描述

二、功能实现

1、场景对象

在这里插入图片描述

  1. 【Main Camera】 代表主摄像机,需要这个我们才能看到如今这个视角
  2. 【游戏主控】 上面不挂载任何图片对象,但挂了一个c#文件,主要用来全局设置。比如这个项目所涉及到的时间针率。

在这里插入图片描述

3.【子弹】 这个子弹可惜忽略,主要是通过它来创建子弹预制体

4.【子弹Prefab】此对象需要挂MyBullet,特别提醒需要在【飞机】脚本下挂它
在这里插入图片描述

5.【飞机】 挂MyJet
在这里插入图片描述

2、代码实现

  • 游戏主控—MyGame代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyGame : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //设置帧率为60
        //Application:应用
        //target:目标
        //Frame:帧
        //Rate:率
        Application.targetFrameRate= 60;

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
  • 子弹Prefab—MyBullet代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyBullet : MonoBehaviour
{
	//在inspector中会出现【speed】,并且可以自由设置参数
    public float speed = 5.5f;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //设置每刷新一次y轴的坐标,y轴坐标随时间增加,即表现为向上的运动
        float dy = speed * Time.deltaTime;
        //将空间坐标翻译赋给transform
        transform.Translate(0, dy, 0, Space.Self);
		//创建对象(而这个对象的坐标由transform提供)表现形式由主摄像机的世界坐标表示
        Vector3 sp = Camera.main.WorldToScreenPoint(transform.position);
        //如果对象的y坐标超过屏幕的高度则被摧毁
        if (sp.y > Screen.height)
        {
            Destroy(this.gameObject);
        }
    }
}

  • 飞机—MyJet代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyJet : MonoBehaviour
{
    public GameObject myPrefab;
    private float interval = 0.4f;
    private float count = 0;
    
    // Start is called before the first frame update
    void Start()
    {
        
       
    }

    // Update is called once per frame
    void Update()
    {
    	//如果鼠标按下,就射出子弹
        if(Input.GetMouseButtonDown(0))
        {
            Fire();
        }

    }
    private void Fire()
    {
    	//创建预制体
    	//Instantiate:示例
        GameObject bullet = Instantiate(myPrefab);
        //子弹的位置=飞机所在位置的y轴加1
        bullet.transform.position = transform.position + new Vector3(0, 1f, 0);
    }
}

三、总结

现在我只是刚开始,给自己打气遇到挫折难题不要放弃,踏踏实实学习,一定会在毕业前修炼成大师的!
对的,这个游戏还没结束,下一章会继续写键盘控制飞机、子弹击中敌人,敌人消失。😊😊😊😊下一章见!

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值