Не используйте Cylinder
в качестве имени вашей переменной, потому что это имя класса для примитива Unity:
https://docs.unity3d.com/ScriptReference/PrimitiveType.Cylinder.html
Редактировать: Как говорит Стейн,код будет работать, но это плохая практика - называть переменные точно такими же, как имя некоторого класса.
Так что, если вы замените имя вашей переменной, например, на myCylinder
, и ваш код теперь выглядитвот так:
public class SwipeControl : MonoBehaviour {
public Transform myCylinder;
void Update()
{
if (Input.touchCount == 1)
{
// GET TOUCH 0
Touch touch0 = Input.GetTouch(0);
// APPLY ROTATION
if (touch0.phase == TouchPhase.Moved)
{
myCylinder.transform.Rotate(Vector3.Right, touch0.deltaPosition.x, Space.World);
}
}
}
}
Скажите, работает ли изменение имени и задание ссылки из редактора.
РЕДАКТИРОВАТЬ: Позаботьтесь о функции Rotate
,если вы вводите 3 аргумента, они должны быть Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);
Таким образом, вы в настоящее время применяете разницу в 0 градусов!
Вот ссылка на документацию для функции Rotate
, а также все различные конструкторы и методы перегрузки, которые вы можете использовать:
https://docs.unity3d.com/ScriptReference/Transform.Rotate.html