Comments and answers for "How to make my cube move on X axis and Y axis (not tangentlly) ?"
http://answers.unity.com/questions/1520361/how-to-make-my-cube-move-on-x-axis-and-y-axis-not.html
The latest comments and answers for the question "How to make my cube move on X axis and Y axis (not tangentlly) ?"Comment by Nikki_heley on Nikki_heley's answer
http://answers.unity.com/comments/1522833/view.html
Thanks bro i appreciate that but i want to change the keys input to touch input..
And now it is done...
Thanks...Wed, 27 Jun 2018 16:42:22 GMTNikki_heleyAnswer by nareshbishtasus
http://answers.unity.com/answers/1522768/view.html
I didnt understand the question fully... But if you want to move the cube in x or y direction only then u can write this code
float x = Input.GetAxis("Horizontal");
Float y = inpu.getaxis("vertical");
If(x > y)
y=0;
else
x = 0;
transform.translate(x, 0, y);
I didnt understand what do do with rotation... Tell me i think i can help...Wed, 27 Jun 2018 14:48:23 GMTnareshbishtasusComment by Nikki_heley on Nikki_heley's comment
http://answers.unity.com/comments/1522741/view.html
thank you man youare awsome . This is very helping .Wed, 27 Jun 2018 13:45:20 GMTNikki_heleyComment by Nikki_heley on Nikki_heley's answer
http://answers.unity.com/comments/1520547/view.html
Bro this not a swipe movement this is a mouse movement .Thu, 21 Jun 2018 12:58:00 GMTNikki_heleyComment by LeeroyLin on LeeroyLin's comment
http://answers.unity.com/comments/1520545/view.html
void DetectSwipe()
{
x = y = 0;
if (Input.touchCount > 0)
{
Touch touch = Input.touches[0];
Vector3 touchPos = touch.position;
if (touch.phase == TouchPhase.Began)
{
touchStartPos = touchPos;
}
else if (touch.phase == TouchPhase.Ended)
{
float angle = CalculateAngle(touchStartPos - touchPos, Vector2.right);
int dir = Mathf.CeilToInt((angle - 45) / 90f);
if (dir == 4)
dir = 0;
if (dir == 0)
x = 1;
else if (dir == 2)
x = -1;
if (dir == 3)
y = -1;
else if (dir == 1)
y = 1;
}
}
}Thu, 21 Jun 2018 12:49:00 GMTLeeroyLinComment by Nikki_heley on Nikki_heley's comment
http://answers.unity.com/comments/1520531/view.html
Thanks i understand what you are saying but what about my detectswipe function , can you please modify my script ...you have maded a new function which is similar to detectswipe..???
What about the detectswipe function..
Plz edit the answer.Thu, 21 Jun 2018 12:18:23 GMTNikki_heleyAnswer by rkoHari
http://answers.unity.com/answers/1520520/view.html
float x=Input.GetAxis("Mouse x");
float y=Input.GetAxis("Mouse Y");
try this code,iThu, 21 Jun 2018 11:51:49 GMTrkoHariComment by UnbreakableOne on UnbreakableOne's comment
http://answers.unity.com/comments/1520516/view.html
I'm just giving you my 2 cents here. After you get input on your Update(), compare them and move the cube on the bigger amount, or based on it.Thu, 21 Jun 2018 11:44:22 GMTUnbreakableOneComment by LeeroyLin on LeeroyLin's comment
http://answers.unity.com/comments/1520513/view.html
How about my new answer? I edit it because I can't reply to you just now. I'm not sure you have seen it.Thu, 21 Jun 2018 11:35:00 GMTLeeroyLinComment by Nikki_heley on Nikki_heley's answer
http://answers.unity.com/comments/1520508/view.html
Plz can you explain this...Thu, 21 Jun 2018 11:12:34 GMTNikki_heleyAnswer by UnbreakableOne
http://answers.unity.com/answers/1520507/view.html
Maybe detect movement in x and y and only move on the bigger one?Thu, 21 Jun 2018 11:10:51 GMTUnbreakableOneComment by Nikki_heley on Nikki_heley's answer
http://answers.unity.com/comments/1520395/view.html
Also sir i want that my cube moves in X and Y axis ...not tangently...when i swipe between the x and y axis it moves on its vertices as show in the pic ...the arrow b/w x and y axis . I just want that weather i swipe in north east direction ..it must move in X axis or Y axis..
May be u understand bro..Thu, 21 Jun 2018 05:56:08 GMTNikki_heleyComment by Nikki_heley on Nikki_heley's answer
http://answers.unity.com/comments/1520392/view.html
Leeroylin thanks bro i appreciate your answer but i didn't get this function
float CalculateAngle(Vector3 from, Vector3 to)
{
Vector3 euler = Quaternion.FromToRotation(Vector3.right, to - from).eulerAngles;
return euler.z != 0 ? euler.z : euler.y;
}
How to put this function in my script...Thu, 21 Jun 2018 05:26:21 GMTNikki_heleyAnswer by LeeroyLin
http://answers.unity.com/answers/1520373/view.html
God! I can't reply to you. Maybe I need a higher "Reputation". So I just edit my answer here.
I create a DetectMouseSwipe function to receive mouse input, you can change your DetectSwipe function by yourself. And here is a CalculateAngle function to calculate the angle(0-360).
I divide the 360angle into 4 directions, which means your move directions.
This will make your cube only move in 4 directions, maybe it's what you mean.
Hope this can help you, bro:
public float rotationPeriod = 0.3f;
public float sideLength = 1f;
bool isRotate = false;
float directionX = 0;
float directionZ = 0;
Vector3 startPos;
float rotationTime = 0;
float radius;
Quaternion fromRotation;
Quaternion toRotation;
float x, y;
public float minSwipeDistY = 1;
public float minSwipeDistX = 1;
private Vector3 touchStartPos;
// Use this for initialization
void Start()
{
radius = sideLength * Mathf.Sqrt(2f) / 2f;
}
// Update is called once per frame
void Update()
{
#if UNITY_EDITOR || UNITY_STANDALONE
DetectMouseSwipe();
#else
DetectSwipe();
#endif
if ((x != 0 || y != 0) && !isRotate)
{
directionX = y;
directionZ = x;
startPos = transform.position;
fromRotation = transform.rotation;
transform.Rotate(directionZ * 90, 0, directionX * 90, Space.World);
toRotation = transform.rotation;
transform.rotation = fromRotation;
rotationTime = 0;
isRotate = true;
}
}
void FixedUpdate()
{
if (isRotate)
{
rotationTime += Time.fixedDeltaTime;
float ratio = Mathf.Lerp(0, 1, rotationTime / rotationPeriod);
float thetaRad = Mathf.Lerp(0, Mathf.PI / 2f, ratio);
float distanceX = -directionX * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));
float distanceY = radius * (Mathf.Sin(45f * Mathf.Deg2Rad + thetaRad) - Mathf.Sin(45f * Mathf.Deg2Rad));
float distanceZ = directionZ * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));
transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);
transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio);
if (ratio == 1)
{
isRotate = false;
directionX = 0;
directionZ = 0;
rotationTime = 0;
}
}
}
void DetectSwipe()
{
// ...
}
float CalculateAngle(Vector3 from, Vector3 to)
{
Vector3 euler = Quaternion.FromToRotation(Vector3.right, to - from).eulerAngles;
return euler.z != 0 ? euler.z : euler.y;
}
void DetectMouseSwipe()
{
x = y = 0;
if (Input.GetMouseButtonDown(0))
{
touchStartPos = Input.mousePosition;
}
else if (Input.GetMouseButtonUp(0))
{
float angle = CalculateAngle(touchStartPos - Input.mousePosition, Vector2.right);
int dir = Mathf.CeilToInt((angle - 45) / 90f);
if (dir == 4)
dir = 0;
if (dir == 0)
x = 1;
else if (dir == 2)
x = -1;
if (dir == 3)
y = -1;
else if (dir == 1)
y = 1;
}
}Thu, 21 Jun 2018 03:55:31 GMTLeeroyLin