unity3d 模拟电脑实现_Unity3D实现虚拟按钮控制人物移动效果

本文详细介绍了如何在Unity3D中使用虚拟按钮控制游戏人物移动。通过创建UI组件,设置按钮并挂载脚本,实现按下按钮时人物根据触摸位置移动。代码示例包括`MyJoystick`和`PlayerMove`两个脚本,分别处理按钮交互和人物移动逻辑。
摘要由CSDN通过智能技术生成

本文为大家分享了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来控制玩家移动了。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值