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>(); } }
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; } }