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

广州广告网站建设图片网站源码

广州广告网站建设,图片网站源码,视频直播网站建设费用,电子外贸网站需求 unity实现键盘wasd键控制图片的移动,图片长度未超出屏幕不能移动,宽度未超出屏幕不能移动。jk键控制图片的缩放,缩放有限制 using UnityEngine;public class ImageController : MonoBehaviour {[Header("移动设置")]public f…

需求
unity实现键盘wasd键控制图片的移动,图片长度未超出屏幕不能移动,宽度未超出屏幕不能移动。jk键控制图片的缩放,缩放有限制

using UnityEngine;public class ImageController : MonoBehaviour
{[Header("移动设置")]public float moveSpeed = 5f; // 移动速度private RectTransform rectTransform;private Vector2 originalSize; // 原始尺寸private Vector2 minPosition; // 最小位置限制private Vector2 maxPosition; // 最大位置限制[Header("缩放设置")]public float scaleSpeed = 0.1f; // 缩放速度public float minScale = 0.5f; // 最小缩放比例public float maxScale = 2f; // 最大缩放比例private Vector3 currentScale; // 当前缩放值private void Start(){rectTransform = GetComponent<RectTransform>();originalSize = rectTransform.sizeDelta;currentScale = rectTransform.localScale;// 计算初始位置限制CalculatePositionLimits();}private void Update(){HandleMovement();HandleScaling();}private void HandleMovement(){Vector2 moveInput = Vector2.zero;// 获取WASD输入if (Input.GetKey(KeyCode.W)) moveInput.y = 1f;if (Input.GetKey(KeyCode.S)) moveInput.y = -1f;if (Input.GetKey(KeyCode.A)) moveInput.x = -1f;if (Input.GetKey(KeyCode.D)) moveInput.x = 1f;// 归一化并应用速度if (moveInput.magnitude > 0){moveInput.Normalize();Vector2 newPosition = rectTransform.anchoredPosition + moveInput * moveSpeed * Time.deltaTime;// 应用位置限制newPosition.x = Mathf.Clamp(newPosition.x, minPosition.x, maxPosition.x);newPosition.y = Mathf.Clamp(newPosition.y, minPosition.y, maxPosition.y);rectTransform.anchoredPosition = newPosition;}}private void HandleScaling(){float scaleInput = 0f;// 获取JK输入if (Input.GetKey(KeyCode.J)) scaleInput = -1f;if (Input.GetKey(KeyCode.K)) scaleInput = 1f;if (scaleInput != 0f){// 计算新缩放值float newScale = currentScale.x + scaleInput * scaleSpeed * Time.deltaTime;newScale = Mathf.Clamp(newScale, minScale, maxScale);currentScale = new Vector3(newScale, newScale, 1f);rectTransform.localScale = currentScale;// 缩放后重新计算位置限制CalculatePositionLimits();// 确保缩放后图片不会超出边界Vector2 clampedPosition = rectTransform.anchoredPosition;clampedPosition.x = Mathf.Clamp(clampedPosition.x, minPosition.x, maxPosition.x);clampedPosition.y = Mathf.Clamp(clampedPosition.y, minPosition.y, maxPosition.y);rectTransform.anchoredPosition = clampedPosition;}}private void CalculatePositionLimits(){// 获取Canvas的尺寸RectTransform canvasRect = GetComponentInParent<Canvas>().GetComponent<RectTransform>();Vector2 canvasSize = canvasRect.sizeDelta;// 计算当前图片的实际尺寸(考虑缩放)Vector2 scaledSize = new Vector2(originalSize.x * currentScale.x,originalSize.y * currentScale.y);// 计算位置限制// 当图片尺寸小于等于屏幕尺寸时,不能移动if (scaledSize.x <= canvasSize.x){minPosition.x = 0;maxPosition.x = 0;}else{float halfImageWidth = scaledSize.x / 2f;float halfCanvasWidth = canvasSize.x / 2f;minPosition.x = halfCanvasWidth - halfImageWidth;maxPosition.x = halfImageWidth - halfCanvasWidth;}if (scaledSize.y <= canvasSize.y){minPosition.y = 0;maxPosition.y = 0;}else{float halfImageHeight = scaledSize.y / 2f;float halfCanvasHeight = canvasSize.y / 2f;minPosition.y = halfCanvasHeight - halfImageHeight;maxPosition.y = halfImageHeight - halfCanvasHeight;}}
}
http://www.dtcms.com/a/601292.html

相关文章:

  • 有的app不能通过应用商城更新
  • 价格变化的效率问题
  • 仓颉三方库开发实战:sanitize_html 实现详解
  • 逻辑回归以及python(sklearn)详解
  • RESTful规范
  • 四川高端网站建设女生做网站开发
  • PDF转图片:轻松实现工程图纸的高效共享与高清展示
  • 【ZeroRange WebRTC】ICE 服务器列表解析(KVS WebRTC)
  • 【考证资讯】注意!2026 年HCIE实验考试内容重要调整!
  • uni-app中表格分页
  • LeetCode hot100:142 环形链表 II:寻找环的入口节点
  • vue下载依赖报错npm ERR node-sass@4.14.1 postinstall: `node scripts/build.js`的解决方法
  • 二分查找专题(十三):“答案二分”的“三连击”——「制作m束花所需的最少天数」
  • 快3网站制作 优帮云简述网站建设的方法
  • Java1112 基类 c#vscode使用 程序结构
  • 第30节:大规模地形渲染与LOD技术
  • Goer-Docker系列1-容器数据持久化
  • 天机学堂——day1(修改bug)
  • 国外网站设计欣赏长沙网页设计哪家专业
  • php做图片交互网站代码成都制作网站公司
  • AI应用开发神器coze(扣子):使用智能体生成文案和图片
  • Java·如何区别多态中的“重写”与“重载”。
  • B端系统自动化MCP工具开发指南
  • 外贸整合营销网站如何快速开发手机app
  • 谢赛宁×李飞飞×LeCun联手重磅|Cambrian-S:「视频空间超感知」新范式,实现真正持续视频感知
  • 在服务器网站上做跳转网站运营推广方式
  • Ansible 安装与入门
  • VMMap 学习笔记(8.7):命令行模式与自动抓取——无界面采集内存证据的正确姿势
  • 大型网站服务器得多少钱app大全免费软件排行榜
  • AXI-5.3.2~5.3.5