public override void Move(Vector3 velocity, bool onMoveMotor = false)
        {
            m_Raycaster.UpdateRaycastOrigins();

            calculatePassengersMovement(velocity);

            movePassengers(m_MoveBeforePlatformPassengers);

            transform.Translate(velocity);

            movePassengers(m_MoveAfterPlatformPassengers);
        }
예제 #2
0
        public override void Move(Vector3 velocity, bool isOnMovingMotor = false)
        {
            m_Raycaster.UpdateRaycastOrigins();
            //updateRaycastOrigins();

            m_CollisionInfo.Reset();

            Raw_Velocity = velocity;

            velocity += ExternalForce;

            if (velocity.x != 0)
            {
                m_MovingDirection = (int)(Mathf.Sign(velocity.x));
            }

            if (velocity.y < 0)
            {
                descendSlope(ref velocity);
            }

            horizontalCollision(ref velocity);

            if (velocity.y != 0)
            {
                verticalCollision(ref velocity);
            }

            Velocity = velocity;

            /*
             * var body = GetComponent<Rigidbody2D>();
             * var vec3 = new Vector3(body.position.x, body.position.y, 0);
             * body.MovePosition(vec3 + velocity);
             */
            movePosition(velocity);

            if (isOnMovingMotor)
            {
                setBelow(true, Vector2.up);
            }

            onCollisionEnterCallback();
            onCollisionExitCallback();
            onCollisionStayCallback();

            resetState();
        }