Enhanced touch
hey everyone, i am trying to use enhanced touch(new input system) in my game . Basically i want to drag a cube in positive , negative x-axis using touch and drag but the result is not as i expected. problem is cube is always move only in negative x- axis. I used same approach in Old input system , however it worked then but not this time. it would be great if someone help me to understand whats wrong in this code. Thanks. here is my code;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.EnhancedTouch;
using touch = UnityEngine.InputSystem.EnhancedTouch.Touch;
using Touchphase = UnityEngine.InputSystem.TouchPhase;
using UnityEngine.EventSystems;
public class TouchTest : MonoBehaviour
{
touch touch_first;
private void Awake()
{
EnhancedTouchSupport.Enable();
}
private void OnEnable()
{
TouchSimulation.Enable();
}
private void OnDisable()
{
TouchSimulation.Disable();
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (touch.activeTouches.Count == 1) {
touch_first = touch.activeTouches[0];
switch (touch_first.phase) {
case Touchphase.Began:
break;
case Touchphase.Moved:
Vector3 WorldObject_coord = Camera.main.WorldToScreenPoint(transform.position);
Vector3 TestDelta = new Vector3(touch_first.delta.x, touch_first.delta.y,WorldObject_coord.z);
Vector3 worldeDelta = Camera.main.ScreenToWorldPoint(TestDelta);
Vector3 Finalpos = new Vector3(transform.position.x + worldeDelta.x*Time.deltaTime,transform.position.y,transform.position.z);
transform.position = Vector3.Lerp(Finalpos,transform.position,10* Time.deltaTime);
break;
case Touchphase.Canceled:
break;
case Touchphase.Ended:
break;
}
}
}
}
okay, so finally , i figured it out...first thing is , it is okay if i dont convert touch position to "WorldtoscreenPoint" to find the correct depth and later "screenToWorldPoint" in this particular case. Second thing is , In older input system , touchDelta dont need Time.deltatime but somehow i need to use Time.deltatime here Because the accumulation per frame is a large value( like6,12 ). Thanks
Your answer
Follow this Question
Related Questions
How do I make a rigid body move towards position of touch 0 Answers
iOS moving up and down question ( code problem ) 0 Answers
How to separate a Tap from a Swipe? 0 Answers
Touch once to activate and touch again to deactivate gameObject using Renderer 1 Answer
TouchPhase.Began hold problem 0 Answers