remanaged drag input and platform movement

This commit is contained in:
Mausham
2025-12-15 22:21:23 +05:45
parent 05287c4b73
commit 16f6d703f9
4 changed files with 21 additions and 23 deletions

View File

@@ -13728,7 +13728,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 393df497de02fce4399040e619446397, type: 3} m_Script: {fileID: 11500000, guid: 393df497de02fce4399040e619446397, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlatformManager m_EditorClassIdentifier: Assembly-CSharp::PlatformManager
rotSpeed: 8 inputScale: 360
maxAngularSpeed: 25
acceleration: 150
deceleration: 170
--- !u!1 &1942266448 --- !u!1 &1942266448
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -5,6 +5,7 @@ public interface IInputReader
{ {
event Action<Vector2> OnDragValueChanged; event Action<Vector2> OnDragValueChanged;
bool isMouseButtonPressed { get; } bool isMouseButtonPressed { get; }
bool isDragging { get; }
Vector2 dragInput { get; } Vector2 dragInput { get; }
void LockInput(); void LockInput();

View File

@@ -14,6 +14,8 @@ public class InputReaderSO : ScriptableObject, GameInputAction.IPlayerActions ,
OnDragValueChanged?.Invoke(_dragInput); OnDragValueChanged?.Invoke(_dragInput);
} }
} }
public bool isDragging => isMouseButtonPressed && dragInput.sqrMagnitude > 0.001f;
public bool isMouseButtonPressed { get;private set; } public bool isMouseButtonPressed { get;private set; }
private Vector2 _dragInput; private Vector2 _dragInput;

View File

@@ -1,16 +1,16 @@
using UnityEngine; using UnityEngine;
using VContainer; using VContainer;
public class PlatformManager : MonoBehaviour,IPlatformManager public class PlatformManager : MonoBehaviour,IPlatformManager
{ {
[Inject] private IPool pool; [Inject] private IPool pool;
[Inject] private IInputReader inputReader; [Inject] private IInputReader inputReader;
private float yPos = 0f; private float yPos = 0f;
public float rotSpeed = 5f; [SerializeField] private float inputScale = 360f;
float rotAmount = 0;
private float targetRotAmount;
private float smoothRotAmount;
private void Start() private void Start()
{ {
@@ -26,22 +26,23 @@ public class PlatformManager : MonoBehaviour,IPlatformManager
{ {
inputReader.OnDragValueChanged -= HandleDrag; inputReader.OnDragValueChanged -= HandleDrag;
} }
private void LateUpdate() private void LateUpdate()
{ {
#if UNITY_EDITOR || UNITY_STANDALONE #if UNITY_EDITOR || UNITY_STANDALONE
if (!inputReader.isMouseButtonPressed) return; if (!inputReader.isMouseButtonPressed) return;
#endif #endif
smoothRotAmount = Mathf.MoveTowards( // Apply rotation
smoothRotAmount, transform.Rotate(Vector3.up * rotAmount, Space.World);
targetRotAmount,
Time.deltaTime * 80f
);
transform.Rotate(Vector3.up * smoothRotAmount, Space.World);
} }
void ShowPlatforms()
private void HandleDrag(Vector2 drag)
{
rotAmount = -drag.x/Screen.width * inputScale;
}
private void ShowPlatforms()
{ {
foreach (var platform in pool.All) foreach (var platform in pool.All)
{ {
@@ -57,15 +58,6 @@ public class PlatformManager : MonoBehaviour,IPlatformManager
platform.transform.position = new Vector3(0, yPos, 0); platform.transform.position = new Vector3(0, yPos, 0);
yPos--; yPos--;
} }
private void HandleDrag(Vector2 drag)
{
float raw = drag.x / Screen.width;
targetRotAmount = -raw * rotSpeed * 180f;
targetRotAmount = Mathf.Clamp(targetRotAmount, -10f,10f);
}
} }
public interface IPlatformManager public interface IPlatformManager