void Update()
    {
        if (_PlayerCollisionManager.PlayerCollisionInfo != collisionInfo.noCollision)
        {
            if (_PlayerCollisionManager.touchedSideInfo != sideInfo.up && _PlayerCollisionManager.touchedSideInfo != sideInfo.capraz)
            {
                var speed     = lastVelo.magnitude;
                var direction = Vector3.Reflect(lastVelo.normalized, _PlayerCollisionManager.normal);


                _PlayerRigidBody.velocity = direction * (speed * 0.5f);
                _PlayerCollisionManager.touchedSideInfo = sideInfo.up;
            }
        }
        lastVelo = _PlayerRigidBody.velocity;


        setBoundariesforPlayerPosition();
        collisionInfo PlayerCollisionInfo = _PlayerCollisionManager.PlayerCollisionInfo;
        Vector2       PlayerVelocity      = _PlayerRigidBody.velocity;
        touchStatus   inputStatus         = _InputManager.currentTouchStatus;

        bool isPlayerStill = (PlayerCollisionInfo != collisionInfo.noCollision && Mathf.Abs(PlayerVelocity.x) < 0.2);

        if (isPlayerStill)
        {
            if (inputStatus == touchStatus.touchReleased)
            {
                Vector2 jumpDirectionVector = calculateJumpDirectionVector(_InputManager.TouchEndPos2D, _InputManager.touchHoldTime);

                _PlayerRigidBody.AddForce(jumpDirectionVector * jumpPower);
            }
        }
    }
示例#2
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        normal = collision.contacts[0].normal;
        PlayerCollisionInfo = statusControl(collision.collider);

        touchedSideInfo            = sideControl(collision.contacts[0].normal);
        isPlayerProperlyOnPlatform = edgeControl();
        if (PlayerCollisionInfo == collisionInfo.CollidingWithBasicGround && touchedSideInfo == sideInfo.up)
        {
            gameObject.GetComponent <Rigidbody2D>().velocity = Vector2.zero;
        }
    }
示例#3
0
 private void OnCollisionExit2D(Collision2D collision)
 {
     PlayerCollisionInfo = collisionInfo.noCollision;
 }