Unity+Code Learning

【Input】Unity自带地Touch Input

2019-06-25  本文已影响0人  zitaoye

Brackey的youtube视频 Touch Control In Unity 2018.9.30
https://www.youtube.com/watch?v=bp2PiFC9sSs

Unity的Touch类

将项目Target Platform转为IOS Build
下载Unity Remote 5
用usb连接IOS手机
并且在Project Setting中进行Editor的设置,选择自己的苹果设备

Unity默认有自己的UI的事件系统;默认可以使用UI进行点击事件。

修改自身位置与点击位置一致

void Update()
{
  if (Input.touchCount>0)
  {
    Touch touch = Input.GetTouch(0);
    Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
    touchPosition.z = zero;
    transform.position = touchPosition;
  }
}

从屏幕中央发射射线到每一个触碰的touch处

void Update()
{
   for(int i = 0; i<Input.touchCount ; i++)
    {
      Vector3 touchPosition = Camera.main.ScreenToWorldPoint(Input.touches[i].positon);
      Debug.DrawLine(Vector3.zero, touchPosition, Color.red);
    }
}

使用虚拟摇杆

在AssetStore中使用免费的 Joystick Pack (https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631) 作为基础

  1. Create UI Canvas
  2. 拖动Fixed Joystick Prefabs放入场景;
  3. 修改代码为如下,并且将之前的FixedJoystick拖入inspector
public Joystick joystick;

void Update()
{
  horizontalMove = joystick.Horizontal * runSpeed;
}


如果想要Calibrate 不受到数值影响,则可以使用以下代码

public Joystick joystick;

void Update()
{
  if(joystick.Horizontal >= .2f)
  {
    horizontalMove = runSpeed;
  }else if (joystick.Horizontal <= -.2f)
  {
    horizontalMove = -runSpeed;
  }
  else { horizontalMove = zero; }
}

对于Vertical 可以使用0.5f作为基本的阈值来设定跳跃以及crouch蹲下事件。

上一篇下一篇

猜你喜欢

热点阅读