Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ChangeColor : MonoBehaviour
- {
- private struct ColorPair
- {
- //Цвет краски
- public Color PaintColor;
- //Цвет обьекта
- public Color ObjColor;
- public override bool Equals(object Obj)
- {
- ColorPair P = (ColorPair)Obj;
- return (this.PaintColor.Equals(P.PaintColor) && this.ObjColor.Equals(ObjColor));
- }
- public ColorPair(Color PaintColor, Color ObjColor)
- {
- this.PaintColor = PaintColor ;
- this.ObjColor = ObjColor;
- }
- public override int GetHashCode()
- {
- return (PaintColor.GetHashCode() / 13) + (ObjColor.GetHashCode() * 7);
- }
- }
- // таблица перекраски [краска, цвет] => [цвет]
- private Dictionary<ColorPair, Color> RepaintTable = new Dictionary<ColorPair, Color>();
- public Color CurrentColor;
- public Color NullColor = Color.TransparentBlack;
- public Color redz;
- public Color bluez;
- public Color yellowz;
- public Color orangez;
- public Color purplez;
- public Color greenz;
- void InitRepaintTable()
- {
- CurrentColor = NullColor;
- RepaintTable.Add(new ColorPair(yellowz, NullColor), yellowz);
- RepaintTable.Add(new ColorPair(redz, NullColor), redz);
- RepaintTable.Add(new ColorPair(bluez, NullColor), bluez);
- RepaintTable.Add(new ColorPair(redz, yellowz), orangez);
- RepaintTable.Add(new ColorPair(redz, bluez), purplez);
- RepaintTable.Add(new ColorPair(bluez, yellowz), greenz);
- RepaintTable.Add(new ColorPair(bluez, redz), purplez);
- RepaintTable.Add(new ColorPair(yellowz, redz), orangez);
- RepaintTable.Add(new ColorPair(yellowz, bluez), greenz);
- }
- void OnTriggerEnter(Collider block)
- {
- Color PaintColor = (Color)block.gameObject.Tag;
- // или если тег занят сделай какоенить преобразование ntrcn -> цвет
- Color ObjColor = CurrentColor;
- ColorPair RP = new ColorPair(PaintColor, ObjColor);
- if (RepaintTable.ContainsKey(RP))
- {
- CurrentColor = RepaintTable[RP];
- }
- else { /*что-то пошло не так*/ }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment