当前位置: 首页 > news >正文

男女做性哪个的小视频网站阿里云网络服务

男女做性哪个的小视频网站,阿里云网络服务,常见的网站名称有哪些,哪些平台可以发广告思路 获取鼠标所在屏幕坐标(Vector2)通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)通过SpriteRenderer访问边界Bounds通过Bounds.Contain检测世界坐标是否在SpriteBounds内通过比例计算来确定在Sprite内的UV坐标…

思路

  1. 获取鼠标所在屏幕坐标(Vector2)
  2. 通过相机ScreenToWorldPoint(Vector3)转为世界坐标 (注意Vector3的z是距离相机的距离,相机需要正交)
  3. 通过SpriteRenderer访问边界Bounds
  4. 通过Bounds.Contain检测世界坐标是否在SpriteBounds内
  5. 通过比例计算来确定在Sprite内的UV坐标,并根据像素长宽确定像素坐标

float pixelX = (worldPositiopn.x - bounds.min.x) / bounds.size.x * bgSprite.texture.width;
float pixelY = (worldPositiopn.y - bounds.min.y) / bounds.size.y * bgSprite.texture.height;

部分编辑器依赖于OdinInspector,不用可以把红线都删了

实现的效果类似这样,根据边界贴图检测鼠标画线位置是否在范围内请添加图片描述

using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;namespace Yueh0607.ClothOperations
{public class CutBehaviour : MonoBehaviour{[ShowIf("IsRuntime")][ReadOnly][SerializeField]Sprite bgSprite, lineStyleSprite, edgeSprite;[ShowIf("IsRuntime")][ReadOnly][SerializeField]SpriteRenderer bgRenderer, lineStyleRenderer;[SerializeField] Color edgeColor = Color.black;bool initialized = false;#if UNITY_EDITORbool IsRuntime() => Application.isPlaying;
#endif/// <summary>/// 初始化裁剪行为/// </summary>/// <param name="bgSprite">背景精灵图</param>/// <param name="lineStyleSprite">裁剪线样式精灵图</param>/// <param name="edgeSprite">边界范围精灵图(RBGA 0-1 使用(0,0,0,1)表示裁剪线范围)</param>public void Initialize(Sprite bgSprite, Sprite lineStyleSprite, Sprite edgeSprite){this.bgSprite = bgSprite;this.edgeSprite = edgeSprite;this.lineStyleSprite = lineStyleSprite;bool sizeMatch = (lineStyleSprite.texture.width == bgSprite.texture.width && edgeSprite.texture.width == bgSprite.texture.width)&& (lineStyleSprite.texture.height == bgSprite.texture.height && edgeSprite.texture.height == bgSprite.texture.height);bool rectMatch = (lineStyleSprite.rect == bgSprite.rect && edgeSprite.rect == bgSprite.rect);if (!sizeMatch) throw new System.Exception("贴图尺寸不合规");if (!rectMatch) throw new System.Exception("精灵尺寸不合规");DynamicInitialize();initialized = true;}/// <summary>/// 动态内容的初始化/// </summary>private void DynamicInitialize(){GameObject bg = new GameObject("CutBackgroundImage");bg.transform.SetParent(transform);bg.transform.position = Vector3.zero;bgRenderer = bg.AddComponent<SpriteRenderer>();bgRenderer.sprite = bgSprite;GameObject lineStyle = new GameObject("LineStyle");lineStyle.transform.SetParent(transform);lineStyle.transform.position = Vector3.zero;lineStyleRenderer = lineStyle.AddComponent<SpriteRenderer>();lineStyleRenderer.sprite = lineStyleSprite;}/// <summary>/// 检查裁剪行为初始化/// </summary>/// <exception cref="System.Exception"></exception>[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]private void ExceptionCheck(){if (!initialized) throw new System.Exception("未初始化裁剪行为!");}/// <summary>/// 将世界坐标转换到像素坐标/// </summary>/// <param name="worldPositiopn"></param>/// <param name="pixelPosition"></param>/// <returns></returns>public bool TransPoint(Vector2 worldPositiopn, out Vector2Int pixelPosition){ExceptionCheck();Bounds bounds= bgRenderer.bounds;if (bounds.Contains(worldPositiopn)){//get pixelX and pixelYfloat pixelX = (worldPositiopn.x - bounds.min.x) / bounds.size.x * bgSprite.texture.width;float pixelY = (worldPositiopn.y - bounds.min.y) / bounds.size.y * bgSprite.texture.height;//float pixelX = (worldPositiopn.x - bounds.) / bgSprite.rect.width * bgSprite.texture.width;//float pixelY = (worldPositiopn.y - bgSprite.rect.y) / bgSprite.rect.height * bgSprite.texture.height;pixelPosition = new Vector2Int(Mathf.RoundToInt(pixelX), Mathf.RoundToInt(pixelY));return true;}pixelPosition = Vector2Int.zero;return false;}/// <summary>/// 判断某个世界坐标是否在裁剪线范围内/// </summary>/// <param name="worldPosition">Sprite所在的坐标系坐标</param>/// <returns></returns>public bool IsInEdgeRange(Vector2 worldPosition){ExceptionCheck();bool result = TransPoint(worldPosition, out Vector2Int pixelPosition);if (!result) return false;Color color = edgeSprite.texture.GetPixel(pixelPosition.x, pixelPosition.y);if (color == edgeColor) return true;return false;}}
}
http://www.yayakq.cn/news/857708/

相关文章:

  • 做机械设备哪个网站好制作网站的基本流程
  • 专门做外贸网站网络平台推广的好处
  • 无线网站应建设在什么地方网站建设服务器维护内容
  • 网站的建站程序能打开的网站你了解的
  • 网站怎样做注册窗口织梦教育培训网站源码
  • 如何建设好一个公司网站哈尔滨建设厅官方网站
  • 网站建设可研报告so导航 抖音
  • 学校网站对学校建设的重要性wordpress单选框php
  • 权威的手机网站建设网站建设q-9
  • 成都公司做网站找什么平台设计软件免费版
  • 做网站单线程CPU和多线程cpu网站建设服务器环境配置
  • 广西网站建设产品介绍html网页制作步骤
  • 做行业网站如何采集信息免费做团购网站的软件好
  • 网站建设的学习方法求html码源网站
  • 苏州网站建设专家庐江网站制作
  • 音乐网站怎么做无线增值业务化妆品网站设计开题报告
  • 图书馆门户网站建设会议记录太原网站建设包括什么
  • 网站建设公司客户分析外贸网站定制建站
  • 中国建设银行辽宁分行网站wordpress上传html文件上传
  • 寺院的网站怎么做开发公司总经理专业知识及能力
  • 上海市网站建设公司wordpress试用
  • 住房和城乡建设部网站准考证怎么做电商运营的基本步骤
  • 青岛李沧区城乡建设局网站莱芜金点子信息港最新
  • 设计软件网站推荐网站前端用什么语言
  • 绍兴网站建设公司电话北京展览设计制作工厂
  • 梅州东莞网站建设做网站送的小程序有什么用
  • 做网站是什么编程深圳龙华做网站公司
  • 政务内网网站建设方案商城网站怎么建设
  • 宁德市住房和城乡建设局新网站制作网站微信登陆入口
  • 郑州网站建设及托管自己如何注册网站