Day 20 | 3D蛇走迷宫AR游戏开发Part1 场景放置、平面侦测

目录
游戏机制
FBX档汇入设定
建模放置、布置场景
侦测平面手动放置场景物件

游戏机制

侦测到平面後,放置迷宫与小妖怪肥遗,操纵介面上的按钮,帮助肥遗走出迷宫。

使用到的素材

肥遗(3D模型) 石头(3D模型) 石头(3D模型) 石头(3D模型)
草(3D模型) 草(3D模型) 草(3D模型) 地板(3D模型)

FBX档汇入设定

在之前的文章中有提到3D建模汇入专案的要点,其中提到FBX会打包3D建模的材质、贴图等,在丢进Unity後,会发现档案的材质是显示none,如果丢进场景中,建模会显示全灰白色,需要将材质从FBX档提取出来才能使用。

在Project视窗中点击FBX档案,在视窗inspector中点选档案的Material,点击Extract Material,将材质从档案中提取出来,储存在存放材质的资料夹中。

原本显示没有None Material的建模,材质会自动被放到建模上,这时候建模物件就会正常显示了。

建模放置,场景布置

游戏开始时,会将场景包含要操作的肥遗、介面、布景,手动放置到平面上,所以须将所有的物件打包成一个Prefab後一次放置。ARCore与ARKit套件,在AR世界是以公尺为单位,在美术制作建模时,如果物件大小设定为1公尺,且在Unity当中Scale为1,在镜头里物件就会以1公尺呈现在环境中。

需事先与美术沟通好尺寸,方便之後进入Unity布置时可以做调整。布置迷宫时,摆放物件,间隔、大小不一,可以更自然呈现。摆放注意迷宫的Rotation以及Scale,基本上就没甚麽问题了。迷宫、肥遗、介面都布置好以後,放入Empty Object里头,最後制作成一个Prefab,之後方便摆放在镜头中。

侦测平面手动放置场景物件

在之前的小游戏中,有提到过平面侦测,这次一样也需要添加AR PlaneManager元件,但改由手动放置物件。

  • 宣告一个bool变数,用来记录是否可手动放置,避免重复放置物件
  • Input.touchCount > 0 判断是否有萤幕接触
  • Input.GetTouch(0).phase == TouchPhase.Began 判断手指刚触摸到屏幕的时候
  • 最後只要放置过物件後,就把放置器关掉罗!
void Update()
{
    
    if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began){
    List<ARRaycastHit> hits = new List<ARRaycastHit>();
    raycastManager.Raycast(Input.GetTouch(0).position, hits, UnityEngine.XR.ARSubsystems.TrackableType.Planes);
    if (hits.Count > 0)
        {
            GameObject.Instantiate(obiectToPlace, hits[0].pose.position, hits[0].pose.rotation);
            gameObject.SetActive(false);
        }
    }
    
    
    
}

以上就是手动放置迷宫场景实作部分,那之後就会进入蛇的移动罗,我们明天见~


<<:  Day20_CSS语法3

>>:  [Day_20]回圈与生成式 - (6)

[LeetCode30] Day29 - 432. All O`one Data Structure

题目 实现一个资料结构,能支持下面4个操作: 执行每个操作,时间复杂度都要求为 O(1) Inc(s...

Day 10 运算宝石:EC2 储存资源 Instance Store vs Elastic Block Storage (EBS)

现在我们来介绍 EC2 里面的 Instance Storage 与 EBS 的差别,那我们开始吧...

[DAY12]测试SSH连线

接续之前做容器,希望可以用code连到另台电脑的container,做了ssh的一些测试 先做了一个...

【Day 10】EC2 x EIP x 萝卜糕实例制作

tags: 铁人赛 DevOps EIP EC2 萝卜糕 概述 碎念时间 不论是开发软件硬体,还蛮常...

Day 19. UI 设计软件- Figma 简介与优势

前二篇解释了 GUI Design 阶段的重点,也提到此时花费设计师的工时相当可观。功欲善其事,必先...