Пример #1
0
        public void BoxAlignmentToGround(UpdateEvent e, BonusBoxAlignmentToGroundNode bonus)
        {
            BonusDataComponent bonusData = bonus.bonusData;
            Transform          transform = bonus.bonusBoxInstance.BonusBoxInstance.transform;
            float angle = (bonus.bonusConfig.AlignmentToGroundAngularSpeed * ((Date.Now - bonus.bonusDropTime.DropTime) - bonus.bonusData.FallDuration)) - Vector3.Angle(transform.TransformDirection(Vector3.up), Vector3.up);

            transform.RotateAround(bonusData.LandingPoint, bonusData.LandingAxis, angle);
            if (Vector3.Angle(bonus.bonusData.GroundPointNormal, transform.TransformDirection(Vector3.up)) <= angle)
            {
                bonus.Entity.RemoveComponent <BonusAlignmentToGroundStateComponent>();
            }
        }
Пример #2
0
        public void BoxAlignmentToGround(NodeRemoveEvent e, BonusBoxAlignmentToGroundNode bonus)
        {
            GameObject bonusBoxInstance = bonus.bonusBoxInstance.BonusBoxInstance;

            if (bonusBoxInstance)
            {
                BonusDataComponent bonusData = bonus.bonusData;
                Transform          transform = bonusBoxInstance.transform;
                float angle = Vector3.Angle(bonusData.GroundPointNormal, transform.TransformDirection(Vector3.up));
                transform.RotateAround(bonusData.LandingPoint, bonusData.LandingAxis, angle);
                Vector3 eulerAngles = transform.eulerAngles;
                eulerAngles.y         = bonus.rotation.RotationEuler.y + (bonusData.FallDuration * bonus.bonusConfig.AngularSpeed);
                transform.eulerAngles = eulerAngles;
            }
        }