Camera.main.WorldToScreenPoint注意事项

背景:

AR卡项目中,需要在识别出的模型上加上升级时粒子效果,需要在生成模型的位置最上层出粒子效果。

然后粒子飞向进度条,实现升级。

关键方法及注意事项:

Camera.WorldToScreenPoint Unity官方文档

  1. 该方法转换后得到的是屏幕坐标,不是Script中能直接用的坐标;
  2. 在1024×768的设备中,转换得到的坐标范围是从屏幕左下角的(0,0)到屏幕右上角的(1024,768);
  3. 如果需要在Unity脚本中使用,参考以下内容...

  • 可以看到,这里是按照2046×1536来根据设备进行缩放的;
  • 根据以上第二点,新建UGUI的一个RectTransform,按对左下角对其;  
  •     //根据Canvas的设置,转换出uGUI可使用的坐标   public Vector2 GetUIPosByScreen(Vector2 screenPos)
        {
            Vector2 v = Vector2.zero;
    
            v.x = screenPos.x * 2048f/Screen.width;
            v.y = screenPos.y * 1536f/Screen.height;
    
            return v;
        }
  • 最后使用Instantiate结合DoTween动态载入粒子系统并做动画

    public void PlayLevelUpAnimation(Vector2 v)
        {
            Debug.Log("v: " + v);
    
            Card.anchoredPosition = GetUIPosByScreen(v);
    
            GameObject levelUpParticle = Instantiate(Resources.Load("FX/LevelUp/E_Candel_B") as GameObject);
    
            levelUpParticle.transform.SetParent(Card);
            levelUpParticle.transform.localPosition = new Vector3(0f, 0f, -45f);
    
            Card.gameObject.SetActive(true);
    
            Tweener moveChou = Card.DOLocalMove(expSlider.transform.localPosition, 6.2f);
    
            moveChou.OnComplete(()=>{
    
                Card.gameObject.SetActive(false);
            });
    
        }
时间: 2024-11-07 10:30:28

Camera.main.WorldToScreenPoint注意事项的相关文章

Camera.main

在Unity项目的C#代码中可以看到Camera.main.transform.position.Camera.main.transform.eulerAngles.Camera.main.transform.rotation等代码. 那么Camera.main是什么意思呢? Camera类 A Camera is a device through which the player views the world. Camera类包含以下静态变量: allCameras Returns all

各个平台camera驱动编写注意事项

各个平台camera驱动编写注意事项 camera驱动开发 1)另外注意,在imx6平台中,4.1.15kernel版本的代码,mxc的mxc_v4l2_capture.c camera主控制器和ov5642.c的sensor驱动之间,通过v4l2-int-device.h和v4l2-int-device.c中的master和slave注册attach连接的方式来关联,关联后,master(camera isp主控制器)通过ioctl来控制slave(sensor).master和slave只有

unity Camera.main.X找不到

在unity中编辑camera的脚本时遇到了这个问题 想要去访问并修改Camera的相关属性以期达到操纵主相机的目的,但是main老是找不到 原因: 脚本名称/类名设置成Camera了! 解决方法: 1. 使用 UnityEngine.Camera.main 代替 Camera.main 使用 2. 修改摄像机的脚本名/类名(只要不是Camera即可) 原文地址:https://www.cnblogs.com/yocichen/p/12287033.html

camera旋转+模型移动

刚接触Unity不久,正处于用什么学什么的状态,遇到这个问题着实研究了一阵子,得到了一个比较笨的方法. 想要完成的功能有两个,一是摄像机绕着整个场景中的所有模型旋转,旋转的中心点是世界坐标的原点:二是不管摄像机旋转到什么位置,模型都能跟随鼠标进行移动. 单独的让摄像机绕世界坐标原点旋转可以使用transform.RotateAround(Vector3.zero, Vector3.down, mouseMovex * Time.deltaTime).但是问题来了,如果只是进行水平方向或是垂直方向

Unity3D拖动任意对象GameObject移动到任意地方

今天不是很忙,研究了一下拖拽GameObject移动到任意位置,沿x轴和z轴移动,其他的也就不说了,上代码: using UnityEngine; using System.Collections; public class DragAndDrog : MonoBehaviour {     private GameObject target;     private bool isMouseDrag;     private Vector3 screenPosition;     privat

如何制作怪物显血

using UnityEngine; using System.Collections; public class Follow3DObject : MonoBehaviour { public Transform target; public Vector3 offset = new Vector3(0, 1, 0); void Update() { if (target != null) { transform.position = Camera.main.WorldToScreenPoin

屏幕坐标和世界坐标的转换+对象池技术(3D打地鼠小游戏)

游戏中可能经常会遇到需要某个物体跟着鼠标移动,然后又需要把物体放在某个鼠标指定的位置 实现方式 Camera.main.WorldToScreenPoint Camera.main.ScreenToWorldPoint 3D打地鼠实例 我这里用到的素材都比较简陋,几乎全是用Unity做的 首先是锤子 就是两个Cylinder,在把手的位置放一个空物体用于模拟锤子的动作,命名为Hammer,把锤子作为Hammer的子物体,给Hammer添加Animation动画: 在三个关键帧位置设置Hammer

Unity全视角游戏的键盘操作位移——研究笔记

1 using UnityEngine; 2 using System.Collections; 3 4 public class MoveCeShi : MonoBehaviour 5 { 6 public float m_Speed = 5; 7 8 private CharacterController m_cc; 9 10 void Start () 11 { 12 m_cc = this.GetComponent<CharacterController>(); 13 } 14 15

枪械展示Demo

枪械展示项目 :全记录 先来一张效果图:[感觉自己的PS又进步了 项目分为三个场景以及主要实现功能: 主场景  点击相应按钮实例化相应模型,点击左侧资料按钮,显示模型对应的资料: 时间线场景  时间线为NGUI搭建,使用tween动画实现出动态效果: 拆装演示场景 模型的拆装动画. 主场景:—————— NGUI搭建UI界面,底边栏按钮用于实例化对应模型,将按钮全部挂载EventListener脚本,并且整合在一个脚本中,挂载与场景的空物体中. 由于每个按钮都会执行实例化与模型自旋转的函数, 将