JoyStick 之前一直不知道发布到手机上怎么操作,看到网上有人说,桌面端上的鼠标点击和手机上的触控点击是一样的,把电脑上的WSAD键改成四个button就行,鼠标左键攻击也改成手机上的一个button,其他一些功能需要专门学习移动端的触控Touch方法,当时一想,改成button就很简单,Touch还是算了,懒得想,觉得很难。(不想用插件)
后面实际操作时,又想到玩手机游戏都是左边有摇杆,想想还是摇杆更好,就搜了大佬的教程,怎么判断移动呢,之前桌面端就利用 float x = Input.GetAxis(“Horizontal”); float z= Input.GetAxis(“Vertical”);现在手机上用摇杆,就用摇杆在X和Z方向的移动值传给float x,float z即可;
然后令我困扰一天的事情发生了,在使用左边摇杆控制人物移动,左边我点击攻击按钮就行攻击时,触控发生了冲突,我只要点击攻击按钮,左边的摇杆就变成朝我右手点击的按钮方向了,我很困扰为什么不能同时左边点击虚拟摇杆控制人物移动,右边点击按钮控制人物攻击,我用关键字搜索很多结果,也有我这样的问题,但没有明确的回答(现在想想知道了,因为太简单了。。emm),其中我看到一个关于双摇杆的实现,我觉得有点类似,都是两边触控,然后研究了一会,额,复杂,我不怎么看得懂,头疼,我只是想两边都能正常点击实现相应功能,两边同时点击的时候不冲突就行了;然后又硬着头皮搜了Touch相关的资料,实在没办法,不想学也要学习了,最后还是在双摇杆实现那个代码中,我看了几遍,突然想到,,不对,我这边是因为没有开启多点触控!!!这下子恍然大悟,懂了,然后我还想跟桌面端那样鼠标滑轮滚动控制视角的缩放,最后结合大佬的代码,我把屏幕分成三部分,左边虚拟摇杆的显示和控制移动,中间双指缩放控制视角,右边是按钮的点击;
代码如下:
(1) player移动控制:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class EasyTouchMove : MonoBehaviour{
//摇杆移动最大半径
public float maxRadius = 100;
//初始化背景图标位置
public Transform moveBackPos;//虚拟摇杆背景位置(摇杆底盘)
public Transform joy; //虚拟摇杆位置
private Vector2 moveCenter;
//hor,ver的属性访问器
private float horizontal=0;
private float vertical=0;
public float Horizontal {
get {
return horizontal; }
}
public float Vertical {
get {
return vertical; }
}
void Start(){
moveCenter = joy.position;
Input.multiTouchEnabled = true;//开启多点触控
}
void Update () {
horizontal = (joy.position.x - moveCenter.x)/100;
vertical = (joy.position.y - moveCenter.y)/100;
if