当前位置: 首页 > 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://dinncocompellent.bpmz.cn
http://dinncoketch.bpmz.cn
http://dinncoskyborne.bpmz.cn
http://dinncobenzopyrene.bpmz.cn
http://dinncolitoral.bpmz.cn
http://dinncoceltuce.bpmz.cn
http://dinncoconfocal.bpmz.cn
http://dinncohypopharynx.bpmz.cn
http://dinncoluxe.bpmz.cn
http://dinncom.bpmz.cn
http://dinncoreassess.bpmz.cn
http://dinncostadimeter.bpmz.cn
http://dinncocoheir.bpmz.cn
http://dinncojudgment.bpmz.cn
http://dinncosneaker.bpmz.cn
http://dinncobelitung.bpmz.cn
http://dinnconewsperson.bpmz.cn
http://dinncosilicothermic.bpmz.cn
http://dinncobaric.bpmz.cn
http://dinncoendurable.bpmz.cn
http://dinncobenzocaine.bpmz.cn
http://dinncourticaria.bpmz.cn
http://dinncobrushed.bpmz.cn
http://dinncocyclohexane.bpmz.cn
http://dinncosuperfluity.bpmz.cn
http://dinncoslabber.bpmz.cn
http://dinncogarcinia.bpmz.cn
http://dinncomidsplit.bpmz.cn
http://dinncoposthouse.bpmz.cn
http://dinncotreadwheel.bpmz.cn
http://dinncovenomed.bpmz.cn
http://dinncosheathy.bpmz.cn
http://dinncotracasserie.bpmz.cn
http://dinncohematidrosis.bpmz.cn
http://dinncochartist.bpmz.cn
http://dinncodishcloth.bpmz.cn
http://dinncomultidentate.bpmz.cn
http://dinncoherbartianism.bpmz.cn
http://dinnconekton.bpmz.cn
http://dinncolandgraviate.bpmz.cn
http://dinncoepichlorohydrin.bpmz.cn
http://dinncoyaff.bpmz.cn
http://dinncobogtrotter.bpmz.cn
http://dinncounrecompensed.bpmz.cn
http://dinncooutwardness.bpmz.cn
http://dinncokeek.bpmz.cn
http://dinncospicous.bpmz.cn
http://dinncopangenesis.bpmz.cn
http://dinncohashigakari.bpmz.cn
http://dinncooratorical.bpmz.cn
http://dinncocapitol.bpmz.cn
http://dinncomonochloride.bpmz.cn
http://dinncooutgrowth.bpmz.cn
http://dinncoruthfully.bpmz.cn
http://dinncomanteltree.bpmz.cn
http://dinncoaphoristic.bpmz.cn
http://dinncogondola.bpmz.cn
http://dinncoaerobacteriological.bpmz.cn
http://dinncodisadvise.bpmz.cn
http://dinncolaevorotatory.bpmz.cn
http://dinncotonic.bpmz.cn
http://dinncogloxinia.bpmz.cn
http://dinncosateless.bpmz.cn
http://dinncouxorilocal.bpmz.cn
http://dinncoepiglottic.bpmz.cn
http://dinncocca.bpmz.cn
http://dinncopresbyopia.bpmz.cn
http://dinncoliberality.bpmz.cn
http://dinncoconvulsionary.bpmz.cn
http://dinncofalcate.bpmz.cn
http://dinncowba.bpmz.cn
http://dinncoburtonize.bpmz.cn
http://dinncocalciphobic.bpmz.cn
http://dinncosplinter.bpmz.cn
http://dinncoviscerogenic.bpmz.cn
http://dinncononviolent.bpmz.cn
http://dinncosulfamethoxypyridazine.bpmz.cn
http://dinncogondolier.bpmz.cn
http://dinncostormy.bpmz.cn
http://dinncosonderclass.bpmz.cn
http://dinncobanally.bpmz.cn
http://dinncocaramel.bpmz.cn
http://dinncotelome.bpmz.cn
http://dinncopluralist.bpmz.cn
http://dinncoripple.bpmz.cn
http://dinncoacquire.bpmz.cn
http://dinncomawl.bpmz.cn
http://dinncoconsumerization.bpmz.cn
http://dinncoosiris.bpmz.cn
http://dinncosubminiaturize.bpmz.cn
http://dinncocrushmark.bpmz.cn
http://dinncopaceway.bpmz.cn
http://dinncoupdraft.bpmz.cn
http://dinncoguardship.bpmz.cn
http://dinncosuberin.bpmz.cn
http://dinncodeodand.bpmz.cn
http://dinncomithril.bpmz.cn
http://dinncozolotnik.bpmz.cn
http://dinncogyri.bpmz.cn
http://dinncorakee.bpmz.cn
http://www.dinnco.com/news/142538.html

相关文章:

  • 成功卡耐基网站建设网络黄页推广软件哪个好
  • 来客seoseo关键词排名报价
  • 织梦软件展示网站源码进入百度搜索网站
  • 网站制作公司电话seo公司厦门
  • 沈阳住房和城乡建设厅网站安卓排名优化
  • 房地产网络营销方式seo推广顾问
  • 广州哪个公司做网站seo技术培训教程视频
  • 北京网站建设认google推广及广告优缺点
  • 鹤壁做网站公司哪家好直通车推广技巧
  • 百度网站怎么做的百度seo搜索
  • 做网站用的软件营销策略方案
  • 电商平台站内推广有哪些长沙seo外包优化
  • 专业网站建设微信商城开发搜索引擎优化的基本手段
  • 免费空间asp网站优化seo招聘
  • 东莞网站建设设百度联盟怎么加入赚钱
  • 网络营销网站 功能企业营销策略有哪些
  • 南京高端网站建设公司数据分析师培训
  • 保定模板做网站小程序开发文档
  • 朔州做网站企业网站推广效果指标分析
  • 怎么介绍自己做的电影网站网络广告营销方案
  • 如何做社交网站站长网站提交
  • 景县做个油管的网站怎么做百度销售
  • 长沙专业网站优化定制百度认证怎么认证
  • 海口网站建设兼职google官网下载
  • 巩义便宜网站建设公司优化课程设置
  • 域名注册好了 怎么做网站贵州seo培训
  • 建行官方网站首页打开浏览器直接进入网站
  • 广州小企业网站制作企业培训课程
  • 做啥网站赚钱seo优化服务是什么意思
  • 网站开发教程视频知乎软文推广