コード例 #1
0
    // 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);
    }
コード例 #2
0
    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;
            }
        }
    }
コード例 #3
0
    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;
                }
            }
        }
    }