// Update is called once per frame void Update() { GetMovementInput(); GetMouseInput(); SetLookDirection(); // based on mouse input if (Input.GetKeyDown(KeyCode.Z)) { emotionController.Handle(EmotionColor.none); } // Debug.DrawLine(transform.position, mouseTarget, Color.red); Debug.DrawRay(transform.position, lookDirection, Color.red); // animation logic animator.SetFloat("MoveX", movement.x); animator.SetFloat("MoveY", movement.y); animator.SetFloat("speed", movement.magnitude); }
private void OnTriggerEnter2D(Collider2D other) { if (other.tag == "Player") { switch (emotionColor) { case EmotionColor.blue: emotionController.SetEmotionWorld(this.gameObject); emotionController.Handle(EmotionColor.blue); break; case EmotionColor.green: emotionController.SetEmotionWorld(this.gameObject); emotionController.Handle(EmotionColor.green); break; case EmotionColor.pink: emotionController.SetEmotionWorld(this.gameObject); emotionController.Handle(EmotionColor.pink); break; case EmotionColor.purple: emotionController.SetEmotionWorld(this.gameObject); emotionController.Handle(EmotionColor.purple); break; case EmotionColor.yellow: emotionController.SetEmotionWorld(this.gameObject); emotionController.Handle(EmotionColor.yellow); break; default: break; } } }
public void Magnet() { distanceToPlayer = Vector3.Distance(transform.position, nearestTransform.position); // calculate distance to player if ((closestEmotionController.EmotionExists(emotionColor)) || (distanceToPlayer > 1.5f)) { fsm.TransitTo(Idle); } else { pickUpSpeed = 1.5f - distanceToPlayer; //become faster while distance decreases (like a magnet) transform.position = Vector2.MoveTowards(transform.position, nearestTransform.position, pickUpSpeed * Time.deltaTime); //move towards player by pickUpSpeed speed tempVal = transform.position.y; //respond for UpDown transform if magnet sequence interrupted (without it emotion will transform to position where it spawned) tempPos = transform.position; // check in update if touching nearest Collider if (this.GetComponent <BoxCollider2D>().IsTouching(nearestTransform.GetComponent <BoxCollider2D>())) { Debug.Log("Closest emotion controller parent: " + closestEmotionController.transform.parent.tag); Debug.Log("After comparing colliders: " + this.name + " with " + nearestTransform.name); switch (emotionColor) { case EmotionColor.blue: closestEmotionController.SaveEmotionWorld(this.gameObject); closestEmotionController.Handle(EmotionColor.blue); break; case EmotionColor.green: closestEmotionController.SaveEmotionWorld(this.gameObject); closestEmotionController.Handle(EmotionColor.green); break; case EmotionColor.pink: closestEmotionController.SaveEmotionWorld(this.gameObject); closestEmotionController.Handle(EmotionColor.pink); break; case EmotionColor.purple: closestEmotionController.SaveEmotionWorld(this.gameObject); closestEmotionController.Handle(EmotionColor.purple); break; case EmotionColor.yellow: closestEmotionController.SaveEmotionWorld(this.gameObject); closestEmotionController.Handle(EmotionColor.yellow); break; default: break; } } } }