Подробные изменения: - Расширен основной gameplay loop: джетпак, новые платформы, оборудование, враги, прогрессия сложности и ограничения взаимодействий игрока. - Добавлены Bootstrap-сервисы запуска приложения, защита, фокус окна, управление курсором и настройки сервисов через DI. - Добавлена COM-интеграция с технической схемой Input System, обработкой кнопок/ADC, подсветкой и консольной диагностикой. - Добавлен отдельный debug/logging модуль с каналами, обработчиками консоли и файловым выводом. - Добавлены asmdef, link.xml, EditMode/PlayMode тесты и обновлена дорожная карта проекта. Проверки: - dotnet build .\\DanroJump.Runtime.csproj --no-restore - dotnet build .\\DanroJump.Tests.EditMode.csproj --no-restore - dotnet build .\\DanroJump.Tests.PlayMode.csproj --no-restore
47 lines
1.7 KiB
C#
47 lines
1.7 KiB
C#
using UnityEngine;
|
||
|
||
namespace DanroJump.Gameplay
|
||
{
|
||
/// <summary>
|
||
/// Оборудование платформы, которое временно ускоряет горизонтальное движение игрока.
|
||
/// </summary>
|
||
public sealed class SpeedBoostEquipment : PlatformEquipmentBase
|
||
{
|
||
[SerializeField] [Min(0.01f)] private float moveSpeedMultiplier = 1.45f;
|
||
[SerializeField] [Min(0.01f)] private float duration = 3f;
|
||
[SerializeField] [Min(0f)] private float bounceVelocity;
|
||
[SerializeField] [Min(0f)] private float activationCooldown = 0.25f;
|
||
|
||
private float lastActivationTime = -999f;
|
||
|
||
/// <summary>
|
||
/// Сбрасывает cooldown при переиспользовании оборудования.
|
||
/// </summary>
|
||
public override void ResetEquipment()
|
||
{
|
||
lastActivationTime = -999f;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Применяет ускорение и опциональный отскок при контакте с игроком.
|
||
/// </summary>
|
||
public override void HandlePlayerContact(JumpPlayerController player, Component source)
|
||
{
|
||
if (player == null || player.IgnoresEnvironmentInteractions || Time.time - lastActivationTime < activationCooldown)
|
||
{
|
||
return;
|
||
}
|
||
|
||
player.ApplyMoveSpeedMultiplier(moveSpeedMultiplier, duration);
|
||
|
||
// Bounce опционален: при нуле оборудование влияет только на скорость.
|
||
if (bounceVelocity > 0f)
|
||
{
|
||
player.Bounce(bounceVelocity);
|
||
}
|
||
|
||
lastActivationTime = Time.time;
|
||
}
|
||
}
|
||
}
|