Unity制作射击游戏案例01(控制角色+发射子弹+摄像机跟踪)

news2024/11/20 20:26:42

 整理逻辑思路:

//【业务逻辑】这个脚本用来1.控制物体移动旋转(WASD)、   2.发射子弹(空格键)

//【程序逻辑2】

首先检测用户没有按下空格键 2.如果按下呢执行发射子弹函数    3.克隆子弹 4.让克隆的子弹往前跑

搭建场景

为子弹模板添加刚体,并且限制旋转

编写脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
using System.IO;
public class RoleControl : MonoBehaviour
{
    //【业务逻辑】这个脚本用来控制物体移动旋转(WASD)、发射子弹(空格键)
    //【程序逻辑】1.首先检测用户是否按下空格键 2.如果按下就执行发射子弹的函数 
    // 3.发射子弹的函数:创建一个子弹 (克隆函数)4.然后让子弹往枪口前方Z轴移动 

    public GameObject Zidanmuban;//用来存储子弹模板物体
    public GameObject ZidanBorn;//用来存储子弹的出生地空物体
    public GameObject ZidanParent;//将来用于存储场景中克隆出来的子弹的父物体
    public float Forcedaxiao = 10f;
    //---------------------------------------------
    GameObject tempZidan;//用来存储克隆出来的临时子弹物体

    public float Movespeed = 10f;//主角移动速度控制
    public float Rotatepeed = 10f;//主角旋转速度控制

    void Start()
    {
        Zidanmuban = GameObject.Find("Zidanmuban"); //从场景中查找到并存储子弹模板物体
        ZidanBorn = GameObject.Find("ZidanBorn");//从场景中查找到并存储子弹出生地物体
        ZidanParent = GameObject.Find("ZidanParent");//从场景中查找到并存储子弹父亲物体
    }
    
    void Update()
    {
        ControlMove();//用来控制主角移动旋转
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log("用户按下空格键");
            FPSShot();
        }

        GameObject.Destroy(tempZidan, 2f);//两秒后销毁物体
    }

    void FPSShot()
    {
        Debug.Log("用户开始发射子弹");
        tempZidan = GameObject.Instantiate(Zidanmuban, ZidanBorn.transform.position, Quaternion.Euler(0, 0, 0), ZidanParent.transform);//克隆子弹
        tempZidan.GetComponent<Rigidbody>().AddForce(ZidanBorn.transform.forward*Forcedaxiao, ForceMode.Impulse);
        
        tempZidan.transform.Rotate(ZidanBorn.transform.TransformDirection(new Vector3(90,0,0)));


    }

    void ControlMove()//用来控制主角移动旋转
    {

        //获取WS\AD的数值返回-1 - 1用来移动主角物体方向
        float MoveX = Input.GetAxis("Horizontal");
        float MoveY = Input.GetAxis("Vertical");
        this.transform.Translate(new Vector3 (MoveX, 0,MoveY)*Movespeed*Time.deltaTime);
        //接下来获取鼠标平移返回-1 - 1用来旋转主角物体
        float RotateDir = Input.GetAxis("Mouse X");
        this.transform.Rotate(new Vector3(0,1,0)* Rotatepeed*RotateDir * Time.deltaTime);
    }

    
}





摄像机跟踪和脚本

这个脚本需要挂在到摄像机,里面谈到的目标物体是在场景中,主角身上加了个空物体,并且放在主角后方,这个变量需要外部给

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

public class CameraFollow : MonoBehaviour
{
    // 用来控制摄像机平滑跟踪
    [SerializeField]
    public GameObject oneTarget;//摄像机跟踪目标点,外部赋值
    public float Followspeed = 1f;
    
    void Update()
    {
        if (oneTarget != null)
        {
            Vector3 FinllTargetPos = oneTarget.transform.TransformPoint(0, 5, -5);
            this.transform.position = Vector3.Lerp(this.transform.position, FinllTargetPos, Followspeed * Time.deltaTime);
            transform.LookAt(oneTarget.transform);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进销存ERP系统源码 基于springboot+vue开发

进销存ERP系统源码 基于springbootvue开发 技术框架 Springboot 2.2.2.RELEASEMyBatis-plus 3.4.2Spring-session-data-redis 2.2.0.RELEASEHuTool 5.7.17Lombok 1.18.10EasyExcel 2.2.10 JDK 1.8Mysql 5.7.18Redis 4.0.8 项目介绍&#xff1a; ERP基于SpringBoot框架&…

智能合约漏洞案例,Palmswap 90 万美元漏洞分析

智能合约漏洞案例&#xff0c;Palmswap 90 万美元漏洞分析 据Safful安全团队情报&#xff0c;2023 年 7 月 25 日&#xff0c;BSC 链上的 Palmswap 项目遭到攻击&#xff0c;攻击者获利超 90 万美元。Safful安全团队介入分析后将结果分享如下&#xff1a; 相关信息 Palmswap …

基于 CPU 在docker 中部署PaddleOCR

1. 拉取镜像 docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.0注&#xff1a;写该文章时&#xff0c;Paddle 最新版本为2.5.1&#xff0c;但是在实际安装中会出现与 PaddleHub 2.3.1版本的冲突&#xff0c;故采用2.4.0版本 2. 构建并进入容器 docker run --name…

conan入门(二十八):解决conan 1.60.0下 arch64-linux-gnu交叉编译openssl/3.1.2报错问题

上一篇博客《conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败》解决了conan 1.60.0交叉编译boost/1.80.1的问题后&#xff0c;我继续交叉编译openssl/3.1.2时又报错了 conan install openssl/3.1.2 -pr:h aarch64-linux-gnu.…

【运维】docker如何删除所有容器

要删除所有已停止的容器&#xff0c;你可以使用以下命令&#xff1a; docker container prune这个命令将会删除所有已停止的容器&#xff0c;以释放磁盘空间和清理Docker环境。删除前请确保你不需要这些已停止的容器&#xff0c;因为一旦删除&#xff0c;容器数据将不可恢复。…

uniapp:如何修改路由加载条的样式

路由加载条默认是绿色&#xff0c;通过元素选择工具我们可以知道元素的类名是#router-loadding .loadding&#xff0c;具体设置在h5-dom.js文件里。 我们直接在App.vue里对加载样式进行修改即可&#xff0c;如下图&#xff1a; !important一定记得要加&#xff0c;否则不生效&…

BCC源码内容概览(5)

接前一篇文章&#xff1a;BCC源码内容概览&#xff08;4&#xff09; 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件&#xff0c;其中一些是同时包含C和Python的单个文件&#xff0c;另一些是.c和.py的成对文件&#xff0c;还有一些是目录。 工具&#xff08;To…

从0到1搞定前端性能测试(非常详细)

提到性能测试大家往往会想到多用户使用系统时对服务器后端的性能测试&#xff0c;前端页面的性能往往容易被忽视&#xff0c;但是如果存在性能问题&#xff0c;就算后端服务器性能再好&#xff0c;用户的体验也是极差的。并且随着现在富前端和大前端的流行&#xff0c;前端系统…

基于SpringBoot的在线商城系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 商品分类管理 商品信息管理 轮播图管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff…

数据增强代码实践,补一点多进程,多线程的知识点

目前最先进的神经网络模型&#xff0c;其本质上也是在利用一系列线性和非线性的函数去拟合目标输出。既然是拟合&#xff0c;当然越多的样本就能获得越准确的结果&#xff0c;这也是为什么现在训练神经网络所使用的数据规模越来越大。 在实际使用中&#xff0c;我们往往可能只…

苹果销量倍增,但iPhone15销量或大跌,中国用户不接受咖喱味

由于印度制造的iPhone15出现质量问题&#xff0c;导致欧洲消费者不接受&#xff0c;由此传出消息指苹果将印度制造的iPhone15完全供应印度市场和中国市场&#xff0c;这已导致中国消费者对它的抗拒&#xff0c;不过这似乎并未影响iPhone15的整体销量。 日前两大电商平台公布的数…

一百八十七、大数据离线数仓完整流程——步骤六、在ClickHouse的ADS层建表并用Kettle同步Hive中DWS层的结果数据

一、目的 经过6个月的奋斗&#xff0c;项目的离线数仓部分终于可以上线了&#xff0c;因此整理一下离线数仓的整个流程&#xff0c;既是大家提供一个案例经验&#xff0c;也是对自己近半年的工作进行一个总结。 二、数仓实施步骤 &#xff08;六&#xff09;步骤六、在Click…

前端关于对象中套用对象传参的小问题

在js的对象是引用类型的&#xff0c;他如果里面还套用对象的话那么通过axios传参给后端就会出现一个问题&#xff0c;就是【object&#xff0c;object】这种包装形式 那么如何来解决这个问题呢&#xff1f; 其实这就是要对数据传输中json格式要有一定的了解才可以解决这个问题…

windows 安装 MySQL 绿色版

windows 安装 MySQL 绿色版 下载 官网&#xff1a; MySQL下载页面&#xff1a; MySQL直接下载链接&#xff1a;https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip 安装 将下载的mysql.zip文件解压缩到指定目录 搜索 cmd 并以管理员身份运行 切换到…

详解MySQL索引+面试题

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、索引概述…

iMovie for Mac v10.3.9(视频剪辑)

iMovie是一款视频剪辑软件&#xff0c;广泛应用于Mac和iOS设备。以下是关于iMovie软件的一些推荐信息&#xff1a; 简单易用。iMovie的设计简洁&#xff0c;操作简单&#xff0c;即使是没有剪辑经验的新手也可以轻松上手。软件内置了丰富的视觉效果、滤镜、绿幕抠图、分屏和画…

算法基础之差分和前缀和

差分 差分介绍 结论&#xff1a;差分是前缀和的逆运算 举例 一维差分 //一维前缀和 a[i]部分就是一维差分数组 s[i] s[i-1]a[i]; //一维差分 a[i] s[i]-s[i-1];二维差分 //二维前缀和 a[i][j]部分就是一维差分数组 s[i][j] s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; //二…

优思学院|如何解读Minitab中测量系统分析(MSA GRR)的结果?

在现代制造和质量控制过程中&#xff0c;精确的测量是至关重要的。为了确保我们的测量工具可靠&#xff0c;我们需要评估其重复性与再现性。这就是测量系统分析&#xff08;Measurement System Analysis&#xff0c;简称MSA&#xff09;的关键目标之一。以下将介绍如何使用Mini…

SPEOS—光学产品设计及仿真工具

SPEOS是ANSYS公司功能强大的光学仿真软件&#xff0c;用于光学设计、环境与视觉模拟、成像仿真等&#xff0c;强大的解决方案提供了可视化光学系统和直观的人机交互平台&#xff0c;其仿真技术已广泛用于汽车、电子电器、精密仪器、照明设备等领域。SPEOS软件内嵌ISO和CIE国际标…

漏洞挖掘篇(基础)

文章目录 方法概述 漏洞挖掘方法分类 静态分析技术动态分析技术 符号执行 符号执行的基本原理符号执行的应用漏洞挖掘-检测是否数组越界 污点分析 基本思想污点分析核心要素优缺点 词法分析 基本概念漏洞挖掘实战 实践一&#xff1a;基于词法分析和逆向分析的可执行代码静态检…