я этот видос сделал для другого чувака, но думаю тебе тоже пригодится
видос:
https://youtu.be/QavP2SPtXQA
код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour //дай скрипту норм назвыание а не "нью бехейвор скрипот"
{
void Start()
{
axis.Normalize();
}
[SerializeField] Vector3 axis;//ось вращения
[SerializeField] float rotation_speed;// градусы в секунду
void Update()//если update или late update, то используйте deltaTime, если fixed update, то используйте fixed delta time. грубо говоря одно fixed синхронизированно с физическими событиями
{
transform.Rotate(axis, rotation_speed * Time.deltaTime);
}
}
дополнение
спешал 4ю еще видос на 18 минут:
https://www.youtube.com/watch?v=s0VcFiL2_RE
код из видоса:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
gameObject.SetActive(false);
rotation_axis.Normalize();
rotated_sword = null;
}
[SerializeField] Transform rot_hand;
[SerializeField] Transform usual_hand;
[SerializeField] float rotation_speed;
[SerializeField] Vector3 rotation_axis;
Transform rotated_sword;
[SerializeField] Transform current_sword;
public void RotateSword()
{
RotateSword(current_sword);
}
void RotateSword(Transform sword)
{
Debug.Assert(rotated_sword == null);
gameObject.SetActive(true);
rotated_sword = sword;
sword.parent = rot_hand;
sword.localPosition = new Vector3(0, 0, 0);
sword.localRotation = new Quaternion(0, 0, 0, 1);
}
public void StopRotatingSword()
{
Debug.Assert(rotated_sword != null);
rotated_sword.parent = usual_hand;
rotated_sword.localPosition = new Vector3(0, 0, 0);
rotated_sword.localRotation = new Quaternion(0, 0, 0, 1);
rotated_sword = null;
gameObject.SetActive(false);
}
public bool IsRotatingSword()
{
return rotated_sword != null;
}
void FixedUpdate()
{
transform.Rotate(rotation_axis, rotation_speed * Time.fixedDeltaTime);
}
}