Совершенно новый для Unity, работающий над базовым c прототипом игровой концепции. Я пытаюсь добавить сетку кругов 3х3, которая переключает цвет при касании на мобильном устройстве. Используя окна Raycasting и Collision, я смог успешно обнаружить ввод и переключить цвет, но когда я это сделал, он переключает цвет для каждого круга, а не только один, который я нажимаю.
Использование Debug.Log(hit.collider.name)
Я вижу, что программа знает, какой круг я нажал, поэтому я думаю, что настроил Raycasting правильно.
Может кто-нибудь помочь с этим?
Вот сценарий:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class colorChange : MonoBehaviour
{
SpriteRenderer sprite;
bool isPressed;
// Start is called before the first frame update
void Start()
{
sprite = GetComponent<SpriteRenderer>();
isPressed = false;
}
// Update is called once per frame
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Vector2 worldPoint = Camera.main.ScreenToWorldPoint(touch.position);
RaycastHit2D hit = Physics2D.Raycast(worldPoint, Vector2.zero);
if (hit.collider != null)
{
if (isPressed == false)
{
Debug.Log(hit.collider.name);
sprite.color = new Color(0, 1, 0, 1);
isPressed = true;
}
else
{
Debug.Log(hit.collider.name);
sprite.color = new Color(1, 1, 1, 1);
isPressed = false;
}
}
}
}
}
}