首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

《射击游戏》游戏开发记录

  • 23-09-15 21:01
  • 3469
  • 8970
blog.csdn.net

游戏开发的学习记录⑥

项目:射击游戏

开始时间:2022.9.29

(已经结束很久了,一直忘了写,补一下)

新学到的:

  1. 做小地图,用来看自己和敌人的位置
//获得屏幕分辨率比率
float ratio = (float)Screen.width / (float)Screen.height;
//使摄像机视图永远是一个正方向,rect的前两个参数表示地图位置,后两个参数是地图大小
this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, 0.2f * ratio);
  • 1
  • 2
  • 3
  • 4

在做小地图这段中,我新认识了Rect,下面是关于官网中rect的截图,官网上的图让我一度认为y值设的越小,距离上方越近。
在这里插入图片描述
但是在x值不变的情况下,当y=0.65反而比0.2距离上方近
在这里插入图片描述

在这里插入图片描述
所以,这里还不是很理解


  1. 敌人状态的一个转换
        m_timer -= Time.deltaTime;
        AnimatorStateInfo stateInfo = m_ani.GetCurrentAnimatorStateInfo(0);
        //待机且不是过渡状态
        if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.idle") && !m_ani.IsInTransition(0))
        {
            m_ani.SetBool("idle", false);
            if (m_timer > 0)
            {
                return;
            }
            //距离小于1.5,进入攻击状态
            if (Vector3.Distance(m_transform.position, m_player.m_transform.position) < 1.5f)
            {
                m_agent.ResetPath();
                m_ani.SetBool("attack", true);//攻击
            }
            else
            {
                m_timer = 1;//重置定时器
                m_agent.SetDestination(m_player.m_transform.position);//设置寻路目标
                m_ani.SetBool("run", true);//行走
            }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Vector3.Distance:
在这里插入图片描述

  1. 敌人自动转向玩家
void RotateTo()
    {
        Vector3 targetdir = m_player.m_transform.position - m_transform.position;
        Vector3 newDir = Vector3.RotateTowards(transform.forward, targetdir, m_rotSpeed * Time.deltaTime, 0.0f);
        m_transform.rotation = Quaternion.LookRotation(newDir);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Vector3.RotateTowards:

在这里插入图片描述

  1. 枪的射击
RaycastHit info;//用来保存射线探测结果
//从枪口向摄像机的正方向射出来一条射线,该射线只能与m_layer指定的层碰撞
bool hit = Physics.Raycast(m_muzzlepoint.position, m_camTransform.TransformDirection(Vector3.forward), out info, 100, m_layer);
  • 1
  • 2
  • 3
public static bool Raycast (Vector3 origin, Vector3 direction, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);
  • 1
参数意思
origin射线在世界坐标系中的起点
direction射线的方向
maxDistance射线应检查碰撞的最大距离。
layerMask层遮罩,用于在投射射线时有选择地忽略碰撞体
queryTriggerInteraction指定该查询是否命中触发器

在这里插入图片描述


成品部分截图:

在这里插入图片描述
这部分是自己做了一个简单的登录,因为人机交互作业的实验二是文本交互,可以基于javaweb做网页的登录界面,但还是对unity更熟悉点,所以在这个前面加了登录界面,交了人机交互的作业,我真是个小机灵鬼。
在这里插入图片描述
加了一个简单的开始界面。上面两张背景图都是网上找的素材。
在这里插入图片描述
这是游戏内的场景。


?一个小记录:
这算是第一个小的3d方面的游戏了,最近没做什么新的了,在研究vr怎么做,真的不懂!!!还没接触代码,还在学一些渲染相关的,又装了做材质的软件,还有建模软件blender,以前用过3dmax,不知道blander好上手不好,但它和unity的配合真的蛮好用的,不用把模型再导进导出了。


(继续加油 ‼ )

注:本文转载自blog.csdn.net的猪肉丸子~的文章"https://blog.csdn.net/zhurouwanzi/article/details/127476695"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top