• 周五. 4 月 24th, 2026

物嫩软件资讯网

软件资讯来物嫩

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

admin@wunen

4 月 22, 2025

游戏开发的

学习记录



项目:射击游戏



开始时间: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);

在做小地图这段中,我新认识了

Rect

,下面是关于官网中rect的截图,官网上的图让我一度认为y值设的越小,距离上方越近。


  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);//行走
            }
        }


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);
    }


Vector3.RotateTowards

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



成品部分截图:


🈶一个小记录:

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


(继续加油 ‼ )

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注