ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【从安装到打包】基于Unity2018实现的全景交互方案全流程(7)

2021-12-16 16:34:15  阅读:161  来源: 互联网

标签:offs 场景 面板 摄像机 文件夹 右键 Unity2018 交互 打包


在Assets文件夹里右键Create一个Folder,取名为Prefab,然后将Canvas拉到Prefab文件夹里

保存一下,打开第二个场景,将Prefab文件夹里刚刚拉进来的Canvas拖入到Hierarchy面板里,然后右键UI- EventSystem,保存一下,将其他的场景同样这样做。这样就实现了通过底部栏其替换场景的功能。可以点上面中间的三角形运行按钮,运行起来进行测试一下。

打开Script文件夹,右键Create-C# Script,创建一个脚本,起名为CameraContral,将其挂在MainCamera上

双击打开CameraContral,写入以下代码

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CameraContral : MonoBehaviour

{

    private Vector2 offs;

    public float speed = 2;//旋转速度

    private float mouseSensitivity = 100f;

    public Transform playerBody;

    float xRotation = 0f;

    void Start()

    {

        offs = transform.eulerAngles;

    }

    void Update()

    {

        if (Input.GetMouseButton(0))     //用户交互的键入 0代表鼠标左键,1代表鼠标右键

        {

            offs += new Vector2(Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime * -2f, Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime * 2f) * speed * 1.5f;   //摄像机旋转的控制

            transform.eulerAngles = offs;

        }

    }

}

保存,返回Unity,将相机拉到相应的引用的位置,挂在上面,现在就实现了按住左键旋转镜头的功能,可以点击播放按钮进行测试,然后在其他场景里也都把这个脚本先挂在相机上,然后再把相机挂到引用的位置。

到这一步,仅使用底部导航窗口进行场景切换的功能就完成了

下一步我们要实现点击场景里的指引标识进行场景切换

首先分析一下需求:1、将标志放在场景里对应的位置,为了让距离大致相等,我们可以创建一个球体,因为球体在内部向外看是看不到的,因此我们可以将标志放在球壳上,这样就可以保证标志与摄像机的距离相等。2、我们需要让标志始终面朝摄像机。3、我们让标志能够检测到自己被鼠标点击了。4、给标志加一个微动的动画效果就更好了。

打开第一个场景,取消2D模式,选中左侧面板上的MainCamera,在Scene面板中按一下F键将视角拉近到摄像机的位置。

在左侧面板右键 3D Object – Sphere,就创建了一个球,我们可以用R 缩放工具稍微放大一点点

在这里我发现了一个问题,那就是摄像机的位置不在坐标原点上,我们需要手动调整一下。选中摄像机,在右侧面板上Transform组件上右键选择Reset进行重置位置,其余所有场景均需要坐着一个操作。也可以检查一下刚才创建的球是否在坐标原点,不是的话也要重置一下。

标签:offs,场景,面板,摄像机,文件夹,右键,Unity2018,交互,打包
来源: https://blog.csdn.net/Byou2233/article/details/121977666

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有