IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity学习(day01)向敌人发射子弹 -> 正文阅读

[游戏开发]Unity学习(day01)向敌人发射子弹

目录

1.内容:

2.效果:

3.实现步骤:

(1)创建一个RayShooter脚本,附加到摄像机上

(2)RayShooter脚本内容:

(3) 敌人类:


1.内容:

添加敌人和子弹射击游戏
///1.编写代码允许玩家向场景发射
/// ? ? ①shoot方法,从摄像机的中心发射射线,将碰撞点作为射击点,发射一个小球
/// ? ? ②OnGUI创建最上层图层,类似贴纸,用来当准心

2.效果:

如图所示,从摄像机中心发射射线,射线如果与敌人发生碰撞则发射一个球模拟子弹

3.实现步骤:

?(1)创建一个RayShooter脚本,附加到摄像机上

(2)RayShooter脚本内容:

shoot()方法实现:

private void shoot()
    {
        //_camera.enabled = false;理解GetComponent小例子
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 point = new Vector3(_camera.pixelWidth / 2, _camera.pixelHeight / 2, 
            0);//获取摄像机屏幕中心坐标
            Ray ray = _camera.ScreenPointToRay(point);//ScreenPointToRay()返回从摄像机通过 
                     屏幕点的光线,也就是产生一个
                                                      //ray对象,而不是Object对象
                                                      //Debug.DrawRay(ray.origin, 
            ray.direction * 10, Color.black);
            RaycastHit hit;//RaycastHit关于射线交叉信息的包装,包括哪里交叉和与哪个对象发生 
                            交叉
            if (Physics.Raycast(ray, out hit))//Physics.Raycast():射线投射 类似于从空间中 
                                                的某个点朝特定方向发射一条光束。
                                              //在该过程中,可以检测并报告与光束接触的任何对 
                                                  象
                                              //out关键字,使一个数据结构在命令内操作和命令 
                                                外都是同一对象而不是,
                                              //那些在不同函数作用域中被反复复制的对象
            {
                GameObject hitObject = hit.transform.gameObject;//获取碰撞对象
                //击中信息不会返回击中对象,而是指向所击中的Transform组件,所以可以通过 
                  Transform来访问gameObject
                //使用对象的GetComponent方法检查它是否是一个反应的目标(如果有ReactiveTarget 
                   就是)
                //GetComponent()方法返回附加到GameObject上的指定类型组件,如果对象没有添加这 
                  个类型组件,
                //则GetComponent不会返回任何东西
                ReactiveTarget target = hitObject.GetComponent<ReactiveTarget>();//将碰撞 
                                                                            对象组件引用给
                                                                                 //攻击对 
                                                                    象:ReactiveTarget
                if(target == null)//击中对象是一个反应目标,则发射小球
                {
                    Debug.Log("啥也不是!!");
                }
                else
                {
                    //Debug.Log("Hit" + hit.point);
                    StartCoroutine(SphereIndicator(hit.point));//运行协程需要使用                                                            
                                                                                     
                                                               StartCoroutine()方法调用
                }
            }
        }
    }

?协程:当需要产生一些慢慢消失的物体时采用协程

private IEnumerator SphereIndicator(Vector3 pos)//球指示器,使用协程发射一个球到碰撞体上
    {   
        GameObject sphere = 
        GameObject.CreatePrimitive(PrimitiveType.Sphere);//CreatePrimitive:
                                                        //创建一个具有原始网格渲染器和相应碰撞体的游戏对象。
        sphere.transform.position = pos;
        yield return new WaitForSeconds(10);
        Destroy(sphere);
            
    }

(3) 敌人类:

单独写一个脚本:命名为ReactiveTarget(这里注意,如果这里命名更改或是未创建都会引起报错),将其附加到enemy上,这样就能达到只射击中方块而墙壁不会被影响的效果,当然这种效果也可以使用tag。

?持续更新!感兴趣记得关注哦

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:36:17  更:2021-11-28 11:36:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 22:42:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码