Пытаюсь создать настольную игру Hex. Первый игрок внизу желтого цвета, а второй игрок вверху - синего цвета. Когда Игрок 1 щелкает гексагон, он должен стать желтым, а когда Игрок 2 щелкает гексагон, он должен стать синим.
Я создал эту шестнадцатеричную карту, используя префаб, и теперь я хочу иметь возможность изменять цвет каждой плитки, когда я нажимаю на нее (желтые шестиугольники, которые вы видите, будут прозрачными, но спрайт, который я импортировал, желтый, поэтому цвет на Sprite Renderer белый, хотя гексы выглядят желтыми).
Кстати, на данный момент изменение цвета в Sprite Renderer меняет цвет всех гексов.
Я следовал руководству quill18creates, чтобы создать шестнадцатеричную карту, за исключением того, что сделал это в 2D, а не в 3D.
https://www.youtube.com/watch?v=j-rCuN7uMR8
На момент написания мой скрипт смены цвета вообще не работает. Я пытался сделать так, чтобы при одном щелчке он становился желтым. Затем следующий щелчок будет синим, следующий - желтым и так далее. Поскольку каждый игрок получает только один щелчок.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ColorChange : MonoBehaviour {
public Color[]colors; // allows input of material colors in a set sized array
public SpriteRenderer rend; // what are we rendering? the hex
private int index = 1; //initialize at 1, otherwise you have to press the ball twice to change color
// Use this for initialization
void Start () {
rend = GetComponent<SpriteRenderer> (); // gives functionality for the renderer
}
// Update is called once per frame
void onMouseDown () {
// if there are no colors present nothing happens
if (colors.Length == 0){
return;
}
if (Input.GetMouseButtonDown(0)){
index += 1; // when mouse is pressed down we increment up to the next index location
// when it reaches the end of the colors it stars over
if (index == colors.Length +1){
index = 1;
}
print (index); // used for debugging
rend.color = colors [index - 1]; // this sets the material color values inside the index
}
} //onMouseDown
}
Как мне это реализовать? Любая помощь приветствуется!
Input.GetMouseButtonDown
, так как он находится вOnMouseDown
. ТакжеOnMouseDown
требует GUIElement или Collider; у вашего объекта нет ни того, ни другого - person Foggzie   schedule 19.03.2019OnMouseDown()
с заглавной буквы. - person Foggzie   schedule 19.03.2019