Quaternion deltaRotation = Quaternion.Euler(m_EulerAngleVelocity * Time.fixedDeltaTime);
m_Rigidbody.MoveRotation(m_Rigidbody.rotation * deltaRotation);
m_EulerAngleVelocity
- это вектор, содержащий в себе угол поворота для каждой из осей. Если ваш объект движется в плоскости XY, то вращать нужно вокруг оси Z:m_EulerAngleVelocity = new(0, 0, rotatePower);
eulerDelta
, который вам не помешает самому придумать, как реализовать. public static Language language
. Значит и менять нужно тоже её, а не создавать где-то в другом месте новую, которую никто нигде не читает.public void ClickButtonRussian()
{
LocalisationSystem.language = Language.Russian;
}
sceneWidth, Screen.width, Screen.height
, а значит запускать этот код можно не каждый апдейт, а только тогда, когда изменяются эти переменные. Выносите код в отдельный метод и вызываете его при каждом изменении этих переменных. У Screen
наверняка есть событие, которое умеет сообщать об изменениях размера экрана, подписываете на него метод. sceneWidth
можно превратить в свойство, которое в set
также будет вызывать этот метод. OpenSmileMenu()
. Так вот, пускай этот метод имеет параметр Action<Sprite>
. Что должно передаваться? Ссылка на метод класса кнопки по которому кликнули, который принимает в себя спрайт и этот спрайт уже применяет к изображению кнопки. private void UpdateSprite(Sprite sprite){
spriteRenderer.sprite = sprite;
}
Что происходит в OpenSmileMenu(Action<Sprite> callback)
? В нём мы этот колбек прибавляем к событию: SmileChoosed += callback;
private void OnClick(Button button){
callback?.Invoke(button.GetComponent<SpriteRenderer>().sprite);
CloseSpriteMenu();
}
Start()
с помощью LookAt()
.[SerializeField] private Transform _focus;
[SerializeField] private float rotationSpeed = 1;
[SerializeField] private float moveSpeed = 1;
private void Start(){
//
tramsform.LookAt(_focus);
//
}
private void RotateCamera()
{
if (Input.GetMouseButton(1))
{
float mouseMove = Input.GetAxis("Mouse X") * rotationSpeed;
_focus.Rotate(0, mouseMove, 0); //-mouseMove для инвертирования
Debug.Log("Rotation " + mouseMove.ToString());
}
}
private void MoveCamera()
{
if (Input.GetMouseButton(0))
{
Vector3 mouseMove = new Vector3(Input.GetAxis("Mouse X"), 0, Input.GetAxis("Mouse Y")) * moveSpeed;
_focus.Translate(mouseMove, Space.Self); //-mouseMove для инвертирования
Debug.Log("Moving " + mouseMove.ToString());
}
}
var TempBlood = Instantiate(Blood, transform.position, Quaternion.AngleAxis(Random.Range(-60, 60), Vector3.forward));
Vector3.forward
означает вращение вокруг оси z. Подойдёт, если игра в 2d. Если 3d, то сами замените на то, что нужно. Уточняйте в каком пространстве ваша игра, 2d или 3d. float angle = Mathf.Atan2(target.position.y - transform.position.y, target.position.x - transform.position.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));// спрайт, повёрнутый вправо
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle - 90));// спрайт, повёрнутый вверх
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle + 90));// спрайт, повёрнутый вниз
<code lang="cs">
//your code
</code>