// Use this for initialization void Start() { size = new Vector2(3, 2); targets = new List <OrganizeBox>(); recyclingSprites = new List <Sprite>(); clothingSprites = new List <Sprite>(); paperSprites = new List <Sprite>(); trashSprites = new List <Sprite>(); electronicsSprites = new List <Sprite>(); alreadyUsed = new HashSet <Sprite>(); foreach (Transform child in spriteTree.transform) { string category = child.name; Debug.Log(category); foreach (Transform sprite in child) { if (category == "Recycling") { recyclingSprites.Add(sprite.GetComponent <SpriteRenderer>().sprite); } else if (category == "Electronics") { electronicsSprites.Add(sprite.GetComponent <SpriteRenderer>().sprite); } else if (category == "Trash") { trashSprites.Add(sprite.GetComponent <SpriteRenderer>().sprite); } else if (category == "Clothing") { clothingSprites.Add(sprite.GetComponent <SpriteRenderer>().sprite); } else if (category == "Paper") { paperSprites.Add(sprite.GetComponent <SpriteRenderer>().sprite); } } } boxLocationMap = new Dictionary <Vector2, OrganizeBox>(); GameObject[] targetsTest; targetsTest = GameObject.FindGameObjectsWithTag("Box"); hoarder = GameObject.FindGameObjectWithTag("Hand").GetComponent <HoarderHand>(); gameTimer = GameObject.FindGameObjectWithTag("HoarderTime").GetComponent <GameTimer>(); foreach (GameObject gameObject in targetsTest) { targets.Add(gameObject.GetComponent <OrganizeBox>()); } foreach (OrganizeBox box in targets) { boxLocationMap.Add(box.Position, box); } target = boxLocationMap[new Vector2(0, 0)]; originalPosition = gameObject.GetComponent <Transform>().position; }
void OnTriggerEnter2D(Collider2D other) { Debug.Log("Colliding"); OrganizeBox collision = other.GetComponent <OrganizeBox>(); if (collision == null) { return; } if (collision.Position.Equals(target.Position)) { Debug.Log("Colliding with correct object"); GetComponent <Transform>().position = originalPosition; type = (OrganizeBox.ItemType)Random.Range(0, 5); Sprite newSprite; bool alreadyAdded = false; switch (type) { case OrganizeBox.ItemType.CLOTHES: newSprite = clothingSprites[Random.Range(0, clothingSprites.Count)]; GetComponent <SpriteRenderer>().sprite = newSprite; alreadyAdded = alreadyUsed.Add(newSprite); break; case OrganizeBox.ItemType.ELECTRONICS: newSprite = electronicsSprites[Random.Range(0, electronicsSprites.Count)]; GetComponent <SpriteRenderer>().sprite = newSprite; alreadyAdded = alreadyUsed.Add(newSprite); break; case OrganizeBox.ItemType.RECYCLING: newSprite = recyclingSprites[Random.Range(0, recyclingSprites.Count)]; GetComponent <SpriteRenderer>().sprite = newSprite; alreadyAdded = alreadyUsed.Add(newSprite); break; case OrganizeBox.ItemType.PAPER: newSprite = paperSprites[Random.Range(0, paperSprites.Count)]; GetComponent <SpriteRenderer>().sprite = newSprite; alreadyAdded = alreadyUsed.Add(newSprite); break; case OrganizeBox.ItemType.TRASH: newSprite = trashSprites[Random.Range(0, trashSprites.Count)]; GetComponent <SpriteRenderer>().sprite = newSprite; alreadyUsed.Add(newSprite); break; } inMotion = false; } }
void OnTriggerEnter2D(Collider2D other) { Debug.Log("Colliding"); OrganizeBox collision = other.GetComponent <OrganizeBox>(); if (collision == null) { return; } if (collision.Position.Equals(target.Position)) { Debug.Log("Hand colliding with target"); holdTimer.StartTimer(); currItem.addItem(); } }
// Update is called once per frame void Update() { timerText.text = "0:"; if (gameTimer.TimeLeft < 10) { timerText.text += "0"; } timerText.text += gameTimer.TimeLeft.ToString(); itemText.text = itemsLeft.ToString(); if (itemsLeft == 0 || gameTimer.TimeLeft == 0) { gameOver = true; /* * if (itemsLeft < 5) * { * GameManager.Instance.CurrentNPCScript.ChangeMentalState((int)GameManager.Kindness.Best); * } * GameManager.Instance.CurrentNPCScript.ChangeMentalState((int)GameManager.Kindness.Good); */ gameTimer.StopTimer(); } if (inMotion) { Vector3 movePos = Vector3.MoveTowards(GetComponent <Transform>().position, target.GetComponent <Transform>().position, SPEED * Time.deltaTime); GetComponent <Transform>().position = movePos; return; } Vector2 posChange = new Vector2(); if (Input.GetKeyDown(KeyCode.A)) { posChange.x -= 1; } if (Input.GetKeyDown(KeyCode.D)) { posChange.x += 1; } if (Input.GetKeyDown(KeyCode.W)) { posChange.y -= 1; } if (Input.GetKeyDown(KeyCode.S)) { posChange.y += 1; } Vector2 newPos; newPos.y = Mod((int)(target.Position.y + posChange.y), (int)size.y); newPos.x = Mod((int)(target.Position.x + posChange.x), 3); if (newPos.x == 1 && newPos.y == 1) { if (posChange.x == -1) { newPos.x -= 1; } else if (posChange.x == 1) { newPos.x += 1; } } Debug.Log(newPos); target.GetComponent <SpriteRenderer>().color = Color.white; target = boxLocationMap[newPos]; if (!hoarder.HandMoving) { hoarder.Target = target; } boxOverlay.GetComponent <Transform>().position = target.GetComponent <Transform>().position; if (Input.GetKeyDown(KeyCode.Space)) { if (target.Type == this.type) { itemsLeft--; target.addItem(); } inMotion = true; } if (GameOver) { LevelManager.Instance.LoadScene(Level.MainGame); GameManager.Instance.playedJoe = true; } }