此例的目标:将一个游戏项目中操控由键盘wasd移动鼠标左键射击,转为摇杆触屏移动,点击button射击。
-------------------------------------------------------
注意:如果摇杆在某个canvas下记得该canvas用screen space - overlay模式(否则摇杆中心点不会随着屏幕走)。canvas scaler选择scale with screen size,screen match mode选择expand。(为了屏幕分辨率自适应)
首先导入Unity的Standard Assets包,然后在CrossPlatformInput文件夹→Prefabs下找到MobileSingleStickControl预制,拖入场景,它包含了一个左部的摇杆,一个右部的button。
如果拖到场景里不显示的话,在build setting里把platform转换成ios或者Android,然后在Mobile Input选项卡下点击Enable显示就好了。
上面的默认摇杆是没有背景的,通常我们熟知的摇杆有一个圆框,中间一个点状摇杆。所以现在我们给默认摇杆添加背景。
MobileSingleStickControl下新建图片,把摇杆的背景图放上去,然后把摇杆调整到背景图的中心,最后把背景放在最上部以最先渲染。
摇杆资源做好了,现在我们把摇杆和人物操纵联系起来。
修改好之后运行就可以移动摇杆来控制对象了。(我目前测的是鼠标操纵摇杆,还未在xcode上真机触屏测试)
其实标准资产里的摇杆包含一个image组件和joystick脚本,如下。
joystick脚本内容如下
using System;
using UnityEngine;
using UnityEngine.EventSystems;
namespace UnityStandardAssets.CrossPlatformInput
{
public class Joystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
public enum AxisOption
{
// Options for which axes to use
Both, // Use both
OnlyHorizontal, // Only horizontal
OnlyVertical // Only vertical
}
public int MovementRange = 100;
public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use
public string horizontalAxisName = "Horizontal"; // The name given to the horizontal axis for the cross platform input
public string verticalAxisName = "Vertical"; // The name given to the vertical axis for the cross pl