android - 我的第一个 Android 游戏的多点触控错误
问题描述
现在我一直在开发一款游戏,如果在屏幕左侧向上或向下滑动,角色就会向上或向下移动。然后,如果我点击屏幕右侧,他也可以发射弹丸。我已经成功使它工作,但问题是当我点击右侧屏幕时滑动功能不起作用。两者都只有在我做其中之一时才有效。如果我发射弹丸,我无法移动角色。有什么建议么?欣赏它的高级。
这是代码:
对于滑动移动功能:
void Swipe() {
if (Input.touchCount > 0) {
Touch t = Input.GetTouch(0);
if (t.phase == TouchPhase.Began)
{
lp = t.position;
fp = t.position;
text.text = fp.x.ToString();
}
else if (t.phase == TouchPhase.Ended)
{
lp = t.position;
//Swipe Up
if (fp.y < lp.y && fp.x < 400)
{
currentLane += 1;
}
//Swipe Down
else if (fp.y > lp.y && fp.x < 400)
{
currentLane -= 1;
}
}
}
}
这是点击或发射射弹功能的代码:
void FireBullets() {
interval += 2 * Time.deltaTime;
anim.SetBool("Attacking", firing);
if (Input.touchCount > 0 && interval > .75f) {
Vector3 bulletTouchPos;
Touch bulletT = Input.GetTouch(0);
bulletTouchPos = bulletT.position;
if (bulletT.phase == TouchPhase.Began) {
if (bulletTouchPos.x > 400)
{
interval = 0;
firing = true;
//Fire Bullets
Instantiate(bullets, new Vector3(transform.position.x + 1.2f, transform.position.y + .3f, transform.position.z), Quaternion.identity);
}
}
}else
{
firing = false;
}
}
解决方案
您的lp
和fp
价值观不关心正在检查哪个手指。
如果您想一次检测多个触摸手势,则需要根据是哪个手指来区分您的检测。
您可以通过查看Touch.fingerId
每个手指的唯一值来做到这一点。手指只是分配给给定触摸点的 ID,因为它在屏幕上移动,以便从当前也在屏幕上的其他触摸点中识别它。
你需要调整你的代码来处理如何存储你需要的信息来做你需要的,但这应该让你开始。
推荐阅读
- java - 如何在 Amazon CloudWatch Logs 中调试 SSL 日志
- java - 抽象银行账户
- c# - 为什么引用属性只能通过上下文起作用
- php - 如何在循环中将last_insert_id插入同一个表和列中
- c# - 在VS中将多个复选框价格一起添加
- javascript - 如果页面上有特定元素,通过 Javascript 用户脚本点击另一个元素?
- javascript - 没有从 select2 ajax 调用 Asp dot net Web 方法
- sql-server - 如何在 SQL Server 中使用拆分?
- json - 如何在 NPM 脚本中输出 JS/JSON
- javascript - 设置输入值显示 [object HTMLInputElement] 角度