i wrote a code that rotates circle on z axis with mouse touch , but the result is like the circle looks at mouse cursor which is not what im looking for , so im going to show you the code samples , code 1 and code 2 :
code1 : which what is the one i use for 2D circle or wheel , and its the one that has result of which the wheel rotates by looking at mouse
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class pss_wheel : MonoBehaviour
{
[Header("Degree of rotation offset. *360")]
public float offset = 180.0f;
Vector3 mPrevPos = Vector3.zero;
Vector3 mPosDelta = Vector3.zero;
bool mIsTouching = false;
void Update()
{
if (Input.GetMouseButton(0))
{
if (!mIsTouching)
{
mPrevPos = Input.mousePosition;
}
mIsTouching = true;
mPosDelta = Input.mousePosition - mPrevPos;
transform.Rotate(transform.up, -Vector3.Dot(mPosDelta, Camera.main.transform.right), Space.Self);
Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
difference.Normalize();
float rotationZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotationZ - (90 + offset));
}
else
{
mIsTouching = false;
}
mPrevPos = Input.mousePosition;
}
}
Code 2 : this one works perfectly fine but for a 3d wheel on a 2d view
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Wheel_physics : MonoBehaviour
{
Vector3 mPrevPos = Vector3.zero;
Vector3 mPosDelta = Vector3.zero;
bool mIsTouching = false;
void Update()
{
if (Input.GetMouseButton(0))
{
if (!mIsTouching)
{
mPrevPos = Input.mousePosition;
}
mIsTouching = true;
mPosDelta = Input.mousePosition - mPrevPos;
transform.Rotate(transform.up, -Vector3.Dot(mPosDelta, Camera.main.transform.right), Space.World);
}
else
{
mIsTouching = false;
}
mPrevPos = Input.mousePosition;
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "yellow_s")
{
Destroy(collision.gameObject);
}
}
};
what im looking for is i want to achieve the results of code 2 but using the 2D wheel , or a way to improve code to give me the same results as code 2 , sorry for the long request , but i’ll be appreciated !