示例#1
0
 private void Construct(Rope rope,
                        FollowCamera2D followCamera2D,
                        PlayerStateFactory stateFactory,
                        UiManager uiManager)
 {
     _rope         = rope;
     _followCamera = followCamera2D;
     _stateFactory = stateFactory;
     _uiManager    = uiManager;
 }
    void Awake()
    {
        FollowCamera2D followCamera2D = SceneUtils.FindObject <FollowCamera2D>();

        if (followCamera2D)
        {
            followCamera2D.AddEventListener(this.gameObject);
        }

        targetPosition = targetTransform.localPosition;
        startPosition  = this.spawnPosition.transform.localPosition;
    }
 private void OnValidate()
 {
     followCamera2D   = FindObjectOfType <FollowCamera2D>();
     dialogController = FindObjectOfType <DialogController>();
 }
示例#4
0
    void Update()
    {
        CharacterController controller = GetComponent <CharacterController>();
        string clipName;

        if (isSuper)
        {
            clipName = "Sidle";
            if (isFire)
            {
                clipName = "Fidle";
            }
        }
        else
        {
            clipName = "idle";
        }
        bool isLand = controller.isGrounded;
        eDIR dir    = dir_;

        bool           move = false;
        FollowCamera2D fc   = GetComponent <FollowCamera2D>();

        if (velocity_.x < 0f)
        {
            Vector3 newPos = transform.position;
            if (newPos.x < -1.4f)
            {
                newPos.x = -1.4f;
            }
            transform.position = newPos;
            dir  = eDIR.LEFT;
            move = true;
        }
        else if (velocity_.x > 0f)
        {
            Vector3 newPos = transform.position;
            if (fc && newPos.x > 1.4f + fc.scrollWidth)
            {
                newPos.x = 1.4f + fc.scrollWidth;
            }
            transform.position = newPos;

            dir  = eDIR.RIGHT;
            move = true;
        }
        if (!isFinish)        //---------------------------------------------------------------- STAGE UNFINISHED;
        {
            if (superMode)
            {
                if (sp.color.a >= 1)
                {
                    isSuperModeColor = false;
                }
                else if (sp.color.a <= .5f)
                {
                    isSuperModeColor = true;
                }
                if (isSuperModeColor)
                {
                    sp.color = new Color(1, 1, 1, sp.color.a + .1f * Mathf.Ceil(Time.deltaTime));
                }
                else
                {
                    sp.color = new Color(1, 1, 1, sp.color.a - .1f * Mathf.Ceil(Time.deltaTime));
                }
            }
            else
            {
                isSuperModeColor = false;
                sp.color         = new Color(1, 1, 1, 1);
            }
            if (!isDie)
            {
                velocity_.x = Input.GetAxis("Horizontal") * accel_;
            }
            if (!isLand)
            {
                velocity_.y -= gravity * Time.deltaTime;
            }

            if (isLand)
            {
                if (Input.GetKeyDown(KeyCode.X))
                {
                    velocity_.y = jumpSpeed + accel_ * 0.5f;
                }
                blockHitFlag = true;
            }
            else
            {
                if (isSuper)
                {
                    clipName = "Sjump";
                    if (isFire)
                    {
                        clipName = "Fjump";
                    }
                }
                else
                {
                    clipName = "jump";
                }

                if (Input.GetKeyUp(KeyCode.X))
                {
                    velocity_.y -= 1f;
                }
            }
            if (isFire)            //-----------------------------------------------------fire!!!!!!
            {
                if (Input.GetKeyDown(KeyCode.Z))
                {
                    if (isFireBallDelay)
                    {
                        float posX;
                        if (dir_ == eDIR.LEFT)
                        {
                            posX = transform.localPosition.x - 0.18f;
                        }
                        else
                        {
                            posX = transform.localPosition.x + 0.18f;
                        }
                        Instantiate(fireBall, new Vector3(posX, transform.localPosition.y + 0.13f, transform.localPosition.z), Quaternion.identity);
                        isFireBallDelay = false;
                        StartCoroutine("onFire", fireDelayNum);
                    }
                }
            }

            if (move)
            {
                if (isLand)
                {
                    if (Input.GetKey(KeyCode.Z))
                    {
                        if (isSuper)
                        {
                            clipName = "Srun";
                            if (isFire)
                            {
                                clipName = "Frun";
                            }
                        }
                        else
                        {
                            clipName = "run";
                        }

                        accel_ += 0.03f;
                        if (accel_ > 2.5f)
                        {
                            accel_ = 2.5f;
                        }
                    }
                    else
                    {
                        if (isSuper)
                        {
                            clipName = "Swalk";
                            if (isFire)
                            {
                                clipName = "Fwalk";
                            }
                        }

                        else
                        {
                            clipName = "walk";
                        }
                        accel_ = 1f;
                    }
                }
            }
            if (!isDie)
            {
                controller.Move(velocity_ * Time.deltaTime);
            }
            if (dir != dir_)
            {
                SetFlip(dir);
                accel_ = 1f;
            }

            if (!isDie)
            {
                if (clipName != clipName_)
                {
                    SetClip(clipName);
                }
            }
        }
        else           //---------------------------------------------------------------- STAGE FINISHED;
        {
            if (!isLand)
            {
                velocity_.y -= gravity * Time.deltaTime;
            }
            else
            {
                if (isSuper)
                {
                    clipName = "Swalk";
                    if (isFire)
                    {
                        clipName = "Fwalk";
                    }
                }
                else
                {
                    clipName = "walk";
                }
                SetClip(clipName);
                accel_      = .5f;
                velocity_.x = accel_;
                finishObject.collider.enabled = false;
            }

            if (!GameMenneger.instance._stageComplete)
            {
                controller.Move(velocity_ * Time.deltaTime);
            }
            else
            {
                if (isSuper)
                {
                    clipName = "Sidle";
                    if (isFire)
                    {
                        clipName = "Fidle";
                    }
                }
                else
                {
                    clipName = "idle";
                }
                SetClip(clipName);
                if (sp.color.a < 0)
                {
                    //Debug.Log("next Stage");
                }
                else
                {
                    sp.color = new Color(1, 1, 1, sp.color.a - .05f * Mathf.Ceil(Time.deltaTime));
                }
            }
        }

        if (isBounce)
        {
            isBounce     = false;
            velocity_.y  = 0f;
            velocity_.y -= 1f;
        }

        if (isRiversBounce)
        {
            isRiversBounce = false;
            velocity_.y    = 0f;
            velocity_.y   += 1.5f;
        }

        if (isDie)
        {
            StartCoroutine("playerDelayDieMotion", .3f);
            if (isPlayerDelayDieMotion)
            {
                if (!isPlayerDown)
                {
                    Vector3 pos = transform.localPosition;
                    pos.y += gravity / 2 * Time.deltaTime;
                    transform.localPosition = pos;
                }
            }
        }

        if (isPlayerDown)        //==========================player dir motion & enermy hit motion
        {
            isPlayerDelayDieMotion = false;
            Vector3 pos = transform.localPosition;
            pos.y -= gravity * Time.deltaTime;
            transform.localPosition = pos;
            GameMenneger.instance.setDie(true);
        }
        else if (transform.position.y < -0.9f)
        {
            chcon.collider.enabled = false;
            isDie          = true;
            isRiversBounce = true;
            tk2dSpriteAnimator ani = GetComponent <tk2dSpriteAnimator>();
            ani.Play("die");
            controller.collider.isTrigger = true;
            StartCoroutine("playerDown", .5f);
        }
    }