首页 > 其他分享 >手写摇杆

手写摇杆

时间:2023-02-14 19:55:40浏览次数:32  
标签:Vector2 pos 摇杆 backGround rock 手写 public

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
/// <summary>
/// 写的是一个摇杆的代码
/// 步骤和使用
/// 1.因为代码使用了锚点坐标 所以要调节锚点 (使用的是固定为左下角)
/// 2.代码是要挂在摇杆后面哪个背景图上的
/// 3.背景图要直接在canvas下,不能在他上面套其他的东西,空对象也不行
/// </summary>
public class Rocker : MonoBehaviour,IDragHandler,IEndDragHandler
{
public GameObject player;
//鼠标拖拽遥感的偏移值 (偏移值是一个静态变量 可供外部获取,做移动等需求)
public static Vector2 offset;
//摇杆后的一个图片 和 摇杆
RectTransform backGround, rock;
//半径 (可拖拽的距离范围)
float r;
bool isdrag;
Vector2 pos;
void Start()
{
rock = transform.GetChild(0).GetComponent<RectTransform>();
backGround = GetComponent<RectTransform>();
//取宽高比较小的一个作为可拖拽的圆半径范围
r = backGround.rect.width < backGround.rect.height ? backGround.rect.width / 2 : backGround.rect.height / 2;
}
public void OnDrag(PointerEventData eventData)
{
//一个v2上的距离
pos = eventData.position - backGround.anchoredPosition;
//设置摇杆的位置
rock.anchoredPosition = Vector2.ClampMagnitude(pos, r);
//偏移值的计算
offset = rock.anchoredPosition / r;
isdrag = true;
}
public void OnEndDrag(PointerEventData eventData)
{
//清除摇杆的位置
rock.anchoredPosition = Vector2.zero;
//清除偏移值
offset = Vector2.zero;
isdrag = false;
}
private void Update()
{
if (isdrag)
{
player.transform.LookAt(new Vector3(pos.x, 0, pos.y) + player.transform.position);
player.transform.Translate(Vector3.forward*Time.deltaTime*5);
}
}
}

标签:Vector2,pos,摇杆,backGround,rock,手写,public
From: https://www.cnblogs.com/Chenchen11111/p/17120720.html

相关文章

  • 简写摇杆
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;///<summary>///写的是一个摇杆的代码///步骤和使用/......
  • 手写一个带拦截器的ajax请求
    ajax<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewpor......
  • Kaggle入门预测赛,手写数字识别Digit Recognizer,使用Kaggle kernel作答,F=0.98
    1、问题和描述直接在kaggle左边的competition竞赛中搜索DigitRecognizer即可进入赛题页面:​​​https://www.kaggle.com/c/digit-recognizer/overview/description​​这......
  • 集成mupdf实现手写笔签批应用
    1.首先,需要在AndroidStudio中集成mupdf,使用AndroidStudio的Gradle构建系统,可以在dependencies中添加如下依赖:implementation'com.artifex.mupdf:android:1.14.0'......
  • vue3 手写dropdown
    <template><divclass="drp_component":class="classname"><p@click="openDrp"class="ws-n"ref="drpDef"title=""><slot></slot></p></div......
  • 手写spring框架
    当我们自己想实现一个Spring框架的时候,想想我们需要实现哪些功能。先从最基础的部分开始,我们首先需要一个容器,我们可以通过这个容器获取bean。那容器里的bean是从哪来的呢?......
  • 卷积生成对抗网络---生成手写数字
    深度卷积生成对抗网络(DCGAN)----生成MNIST手写图片1、基本原理生成对抗网络(GAN)由2个重要的部分构成:生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”......
  • 保姆级手写promise以及promise常用得方法
    最近迷上了promise,觉得还挺有意思,看了大佬的一篇知乎文章  面试官:“你能手写一个Promise吗” ,写的很详细,超级赞,看完了来着做个笔记,牢固一下理解和印象。1.常见Prom......
  • 使用策略模式-手写本地负载均衡器轮训算法
    分析有轮训随机权重等本地负载均衡器算法多个策略的共同行为从集群里取一个出来本文采用策略模式去手写 Maven依赖Maven依赖信息<parent><groupId>org.sp......
  • Android集成mupdf,实现手写笔签字,手指翻页的java代码
    importandroid.graphics.Bitmap;importandroid.graphics.Color;importandroid.graphics.RectF;importandroid.util.Log;importjava.util.LinkedList;importc......