适用于2名玩家的Unity Mobile Control(计数触控)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适用于2名玩家的Unity Mobile Control(计数触控)相关的知识,希望对你有一定的参考价值。
我试图在一个屏幕上实现2个玩家的控制
这是一个代码:
if (playerNum == 1) {
if (Input.touchCount > 0) {
for (int i = 0; i < 1; i++) {
if (Input.GetTouch (i).position.x > 0 && Input.GetTouch (i).position.x < Screen.width / 4) {
transform.Rotate (Vector3.forward * 300f * Time.deltaTime);
}
if (Input.GetTouch (i).position.x > Screen.width / 4 && Input.GetTouch (i).position.x < Screen.width / 2) {
transform.Rotate (Vector3.back * 300f * Time.deltaTime);
}
}
}
} else {
if (Input.touchCount > 0) {
for (int i = 0; i < 1; i++) {
if (Input.GetTouch (i).position.x > Screen.width / 2 && Input.GetTouch (i).position.x < Screen.width * 3 / 4) {
transform.Rotate (Vector3.back * 300f * Time.deltaTime);
}
if (Input.GetTouch (i).position.x > Screen.width * 3 / 4 && Input.GetTouch (i).position.x < Screen.width) {
transform.Rotate (Vector3.forward * 300f * Time.deltaTime);
}
}
}
}
这就是原理图:
同
if(Input.touchCount> 0){for(int i = 0; i <1; i ++)
我只能使用一个水龙头,不仅用于红色或绿色区域,而且用于全屏。如果值更高,i <5(例如),我只能在一个区域中握住4个手指并且旋转速度快4倍。如何更改代码以仅计算每个区域的一次点击?
答案
我手边没有任何模拟器,但我相信以下应该可以工作:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public float Speed = 300.0f;
void Update()
{
var w = Screen.width / 4.0f;
var h = Screen.height;
var r1 = new Rect(w * 0, 0.0f, w, h);
var r2 = new Rect(w * 1, 0.0f, w, h);
var r3 = new Rect(w * 2, 0.0f, w, h);
var r4 = new Rect(w * 3, 0.0f, w, h);
var t1 = Input.GetTouch(0);
var tc = Input.touchCount;
if (tc == 1 && t1.phase == TouchPhase.Began)
{
var pos = t1.position;
var dir = Vector3.zero;
if (r1.Contains(t1.position))
dir = Vector3.back;
if (r2.Contains(pos))
dir = Vector3.forward;
transform.Rotate(dir * Speed);
}
}
}
另一答案
所以,我创建了4个变量:AZone,BZone,CZone,DZone。现在我可以控制每一次触摸。在我的例子中,只有当AZone等于1时我才会旋转。它的效果非常好,正是我所需要的。谢谢你帮助我解决这个问题。
if (Input.touchCount > 0) {
AZone = 0;
BZone = 0;
//Debug.Log (Input.touchCount);
for (int i = 0; i < Input.touchCount; i++) {
if (Input.GetTouch (i).position.x > 0 && Input.GetTouch (i).position.x < Screen.width / 4) {
AZone += 1;
if (AZone == 1) {
transform.Rotate (Vector3.forward * 300f * Time.deltaTime);
}
//Debug.Log (AZone);
}
if (Input.GetTouch (i).position.x > Screen.width / 4 && Input.GetTouch (i).position.x < Screen.width / 2) {
BZone += 1;
if (BZone == 1) {
transform.Rotate (Vector3.back * 300f * Time.deltaTime);
}
}
}
}
以上是关于适用于2名玩家的Unity Mobile Control(计数触控)的主要内容,如果未能解决你的问题,请参考以下文章
unity3d (2d!) - 相机以玩家为中心,但永远不会超过“地图”边界
phpmyadmin 事件语法错误,而它适用于 sql 命令
适用于 Android 的 JQuery Mobile + PhoneGap - 加载 index.html 时出错