unity相机视角平移一段距离

news/2024/7/5 1:55:38
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControlCamera : MonoBehaviour
{


    //相机视角焦点平移一段距离
    //需求  相机视角   内的3D对象A    在视角内平移到屏幕C点   
    public Vector3 InitCameraPos;
    // Start is called before the first frame update
    void Start()
    {
        InitCameraPos = Camera.main.transform.position;
    }
    public Transform A;
    public Transform B;
    public Transform UI;
    public bool OpenA;
    public Vector3 Span;//相机坐标加上这个插值
    // Update is called once per frame
    void Update()
    {


        if (OpenA)
        {


            //从相机 发送一条射线到UI  撞击到Plane  会发现 撞击点的球和 UI  始终在屏幕上同一个点
            RaycastHit hitInfoUI;//平行于摄像机Z轴向量的射线
            if (Physics.Raycast(Camera.main.transform.position, UI.position - Camera.main.transform.position, out hitInfoUI))
            {
                UIWorldPositionTra.position = hitInfoUI.point;
            }



            RaycastHit hitInfoA;//平行于摄像机Z轴向量的射线  
            if (Physics.Raycast(Camera.main.transform.position, UI.position - Camera.main.transform.position, out hitInfoUI) &&
                Physics.Raycast(A.position, A.position + Camera.main.transform.forward * 10000, out hitInfoA))
            {
                Span = hitInfoA.point - hitInfoUI.point ;
#if UNITY_EDITOR
                Debug.DrawLine(hitInfoA.point, hitInfoUI.point, Color.red);      
#endif
            }





#if UNITY_EDITOR
            //Debug.DrawLine(Camera.main.transform.position, A.position, Color.red);
            //Debug.DrawLine(A.position, A.position + Camera.main.transform.forward * 10000, Color.red);

            Debug.DrawLine(A.position, A.position + Camera.main.transform.forward * 10000, Color.red);
            Debug.DrawLine(UI.position, UI.position + Camera.main.transform.forward * 10000, Color.blue);


            Debug.DrawLine(Camera.main.transform.position, Camera.main.transform.position + (UI.position - Camera.main.transform.position) * 1000, Color.black);
#endif
            return;
        }

    }
    public Transform UIWorldPositionTra;
}

 

 


http://lihuaxi.xjx100.cn/news/1319501.html

相关文章

基于springboot图书个性化推荐系统的设计与实现【附ppt和万字文档(Lun文)和搭建文档】

主要功能 前台登录: ①首页:图书名称查询、图书信息推荐、好书推荐、图书信息展示 ②图书信息:图书类别、图书名称、名称类别作者查询、图书详情、收藏、点赞、评论 ③好书推荐:图书展示、点击查看 ④留言反馈:用户可…

争夺数据黑匣子市场,谁将接盘这家Tier1的被动安全业务

在相继卖掉智驾软件算法资产(高通收购)、主动安全传感器及系统业务(麦格纳收购)后,Veoneer最后剩余的被动安全系统业务(主要是安全气囊ECU)也在寻找产业买家。 本周,美国私募股权公司…

【动态规划算法】第八题:931.下降路径最小和

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法\🎄 如 果 你…

【代码随想录day4】两两交换链表中的节点

题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head [1,2,3,4] 输出:[2,1,4,3] 示例 2: …

论文学习——U-Net: Convolutional Networks for Biomedical Image Segmentation

UNet的特点 采用端到端的结构,通过FCN(最后一层仍然是通过卷积完成),最后输出图像。通过编码(下采样)-解码(上采样)形成一个“U”型结构。每次下采样时,先进行两次卷积&…

VUE项目打包成apk

在我们的开发需求中,可能会遇到需要将vue项目中的H5代码打包成一个安卓的app,那么我为大家介绍一套保姆级的解决方案,看完你就会。 VUE HBuilder 1.准备工作: 需要下载一个HBuilder X编辑器,不过我相信大家身为前端…

代码随想录算法训练营第59天 | 503.下一个更大元素 II + 42.接雨水

今日任务 目录 503.下一个更大元素 II - Medium 42.接雨水 - Hard 503.下一个更大元素 II - Medium 题目链接:力扣-503. 下一个更大元素 II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nu…

【C语言基础】函数(2)

在函数(1)中我们已经讲过了函数的定义,形参与实参,函数的调用,局部变量与栈内存 接下来还有几个要强调的函数相关知识。 一、静态函数 静态函数是在函数声明前加上关键字 static 的函数。静态函数在C语言中具有以…