Unity3D实现虚拟按钮控制人物移动效果

本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下

创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片

在Button按钮上挂载该脚本

using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class MyJoystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {

  public Canvas canvas;
  public static float h;   //h和v的值传回给player脚本,使得物体移动
  public static float v;

  private bool isPress = false; //Button按钮是否按下
  private Vector2 touchPos = Vector2.zero; //按下的位置

  void Update() {
    if (isPress)
    {
      RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
        Input.mousePosition, null, out touchPos);

      //根据Canvas和Image的Rectransform位置相减得出
      touchPos += new Vector2(427, 299); 

      float distance = Vector2.Distance(Vector2.zero, touchPos);

      if (distance > 52) { //限制Button不能超出Image位置(两者位置相减得出52)
        touchPos = touchPos.normalized*52;
        transform.localPosition = touchPos;
      }
      else
      {
        transform.localPosition = touchPos;
      }

      h = touchPos.x / 52;
      v = touchPos.y / 52;
    }

  }

  //鼠标按下时触发
  public void OnPointerDown(PointerEventData eventData) {
    isPress = true;
  }

  //鼠标按键弹起时触发
  public void OnPointerUp(PointerEventData eventData)
  {
    isPress = false;
    transform.localPosition = Vector3.zero;
  }

}

在玩家身上挂载控制玩家移动的脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour {

  public float speed = 0.1f;

  private float h = 0;
  private float v = 0;

  void Update() {
    //首先检测虚拟按键有没有移动,没有再选择键盘输入
    if (Mathf.Abs(MyJoystick.h) > 0 || Mathf.Abs(MyJoystick.v) > 0) {
      h = MyJoystick.h;
      v = MyJoystick.v;
    }
    else{
      h = Input.GetAxis("Horizontal");
      v = Input.GetAxis("Vertical");
    }
    //玩家位置移动
    if (Mathf.Abs(h) > 0.1 || Mathf.Abs(v) > 0.1) {
      Vector3 targetDir = new Vector3(h, 0, v);
      transform.position += targetDir * speed;

      transform.LookAt(transform.position+targetDir);
    }

  }
}

这样,就能通过按下Button来控制玩家移动了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity3D控件Easytouch控制主角移动

    本文实例为大家分享了Unity3D控件Easytouch控制主角移动的具体代码,供大家参考,具体内容如下 开发步骤: 1.导入Charactor Controller资源包: 2.导入Easy Touch 3.1.0的资源包: 3.创建一个人物模型: 4.新建一个Plane作为地板. 5.新建一个joystick,添加步骤如下图所示: 6.设置摇杆的相关属性: 注:如图中属性一定要设置好,不然的话会出现摇杆没有反应的情况!!! 7.为主角(即需要Easytouch摇杆控制移动的模型)新建一个脚本

  • Unity移动端的复制要这么写示例代码

    前言 Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏"roll-a-ball".游戏涉及了许多Unity的基本知识,用来入门很不错. 本文主要给大家了关于Unity移动端的复制的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 游戏上线很久了,有些玩家慢慢就流失了,为了让刚流失的玩家再度回归所以做了召回功能!如果一个200级的玩家10天没上线且成功召回的,就会给予召回玩家丰厚的奖励! Q:那如何召回这个流失的玩家呢? A:召回

  • Unity键盘WASD实现物体移动

    本文实例为大家分享了Unity键盘WASD实现物体移动的具体代码,供大家参考,具体内容如下 1首先在场景中建立一个Capsule,将主摄像机拖到其物体下. 2.将脚本挂在Capsule物体下,WASD 控制移动方向,空格延Y轴向上移动,F延Y轴向下移动 using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveCam : MonoBehaviour { priva

  • Unity3D实现控制摄像机移动

    本文实例为大家分享了Unity3D实现控制摄像机移动的具体代码,供大家参考,具体内容如下 最近公司的几个项目开发内容基本相同,很多脚本直接复制过来就可以拼接项目.之前一直是代码爱好者,能自己敲的绝对不去复制粘贴.但是开发速度确实是被耽误了,所以接下来打算把开发中常用的脚本都发到博客上.自己需要的时候直接拿来.也希望能帮到你们. unity编辑器中按住鼠标右键,在通过控制键盘的wasdqe键可以自由控制视野. 下面就是实现操作的代码: using System.Collections; using

  • Unity调取移动端的麦克风进行录音并播放

    本文实例为大家分享了Unity调取移动端的麦克风进行录音并播放的具体代码,供大家参考,具体内容如下 1.对MicroPhone类的理解 对麦克风的调用在Unity里主要是用到了MicroPhone这个类,此类里面有几个方法可以方便我们实现功能 2.代码演示 #region 模块信息 // ********************************************************************** // Copyright (C) 2018 Blazors // P

  • Unity实现物体左右移动效果

    本文实例为大家分享了Unity实现物体左右移动效果的具体代码,供大家参考,具体内容如下 效果如下 代码: using UnityEngine; using System.Collections; //Add this script to the platform you want to move. //左右移动的平台 public class MovingPlatform : MonoBehaviour { //Platform movement speed.平台移动速度 public floa

  • Unity3D实现物体旋转缩放移动效果

    本文实例为大家分享了Unity3D实现物体旋转缩放移动的具体代码,供大家参考,具体内容如下 由于项目运行在安卓上,运用到了插件,比较麻烦.你们可以在触发条件上进行修改,不用插件也可以. 1.下载FingerGestures 插件 下载地址 点击打开链接 2.导入插件,创建场景 将预设Finger Gestures Initializer 拖拽到 Hierarchy 视图中 3.添加脚本,拖拽到摄像机上.创建一个方块拖拽到脚本target 属性上. using UnityEngine; using

  • Unity3D实现虚拟按钮控制人物移动效果

    本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下 创建Image的UI组件,在Image下新建一个Button按钮.在Image 和Button上拖进Sprite图片 在Button按钮上挂载该脚本 using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class MyJoystick : Mono

  • js实现按钮控制带有停顿效果的图片滚动

    本文实例使用js实现带有停顿效果的图片滚动,受按钮控制,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝滚动2</title> <style> #warp{ width: 1250px; height: 300px; overflow: hidden; margi

  • jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果

    复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动</title> <meta name="description" cont

  • JS实现点击按钮控制Div变宽、增高及调整背景色的方法

    本文实例讲述了JS实现点击按钮控制Div变宽.增高及调整背景色的方法.分享给大家供大家参考.具体如下: 这里使用JavaScript实现点击按钮后改变DiV的高度.宽度和背景色等,点击对应按钮,Div调整高度.调整宽度.调整背景色等.实现方面主要是使用JS来控制点击按钮后改变CSS样式文件,这一切都是在JS的动态控制下,比如无刷新切换网页风格的实现,可以以此为基础来扩展. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

  • Android利用悬浮按钮实现翻页效果

    今天给大家分享下自己用悬浮按钮点击实现翻页效果的例子. 首先,一个按钮要实现悬浮,就要用到系统顶级窗口相关的WindowManager,WindowManager.LayoutParams.那么在AndroidManifest.xml中添加权限: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 然后,我们要对WindowManager,WindowManager.Layout

  • Angular实现点击按钮控制隐藏和显示功能示例

    本文实例讲述了Angular实现点击按钮控制隐藏和显示功能.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net Angular显示隐藏</title> <style> .box{ width: 100p

  • js实现点击左右按钮轮播图片效果实例

    本文实例讲述了js实现点击左右按钮轮播图片效果的方法.分享给大家供大家参考.具体实现方法如下: $(function () { var index = 1; var pPage = 1; var $v_citemss = $(".citemss"); var $v_show = $v_citemss.find("ul"); v_width = $v_citemss.width();//图片展示区外围div的大小 //注:若为整数,前边不能再加var,否则会被提示un

  • JS实现按钮控制计时开始和停止功能

    下面给大家分享一段实例代码关于JS实现按钮控制计时开始和停止功能,具体代码如下所示: <span style="font-size:18px;"><body> 小闹钟: <span id="nz"></span> <input type="button" value="开始计时" onclick="nzbg(this)"> <input ty

  • js实现鼠标滚轮控制图片缩放效果的方法

    本文实例讲述了js实现鼠标滚轮控制图片缩放效果的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm

随机推荐