• Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    K0TlK, не помогло ни то, ни то
    когда смотрю влево ошибка:
    NullReferenceException: Object reference not set to an instance of an object
    Player.Flip () (at Assets/Scripts/Player.cs:73)
    Player.Update () (at Assets/Scripts/Player.cs:58)
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    Буду очень благодарен, если расскажите от А до Я
    Что куда дописать, а что убрать
    Я новенький в сфере, но очень интересуюсь
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    В Player так-же добавил ган
    запустил, и появилась инверсия с двух сторон
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    Вот код gun
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class gun : MonoBehaviour
    {
    public float offset;
    public GameObject bullet;
    public Transform shotPoint;

    private SpriteRenderer _spriteRenderer;
    private float timeBtwShots;
    public float startTimeBtwShots;

    private void Start()
    {
    _spriteRenderer = GetComponent();
    }


    void Update()
    {
    Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
    float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset);




    if (timeBtwShots <= 0)
    {
    if (Input.GetMouseButton(0))
    {
    Instantiate(bullet, shotPoint.position, transform.rotation);
    timeBtwShots = startTimeBtwShots;
    }
    }
    else
    {
    timeBtwShots -= Time.deltaTime;
    }

    }

    public void Flip(float direction)
    {
    _spriteRenderer.flipY = direction > 0;
    }





    }
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    K0TlK, Вроде сделал так, как сказали вы
    но ошибка не пропала
    Вот код Player
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class Player : MonoBehaviour
    {
    public ControlType controlType;
    public Joystick joystick;
    public float speed;

    public enum ControlType{PC, Android}

    private Rigidbody2D rb;
    private Vector2 moveInput;
    private Vector2 moveVelocity;
    private Animator anim;
    [SerializeField] private gun _gun;

    private bool facingRight = true;

    void Start()
    {
    rb = GetComponent();
    anim = GetComponent();
    if (controlType == ControlType.PC)
    {
    joystick.gameObject.SetActive(false);
    }
    }


    void Update()
    {
    if(controlType == ControlType.PC)
    {
    moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
    }
    else if(controlType == ControlType.Android)
    {
    moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
    }
    moveVelocity = moveInput.normalized * speed;

    if(moveInput.x == 0)
    {
    anim.SetBool("isRunning", false);
    }
    else
    {
    anim.SetBool("isRunning", true);
    }
    if(!facingRight && moveInput.x > 0)
    {
    Flip();
    }
    else if(facingRight && moveInput.x < 0)
    {
    Flip();
    }
    }

    void FixedUpdate()
    {
    rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }

    private void Flip()
    {
    facingRight = !facingRight;
    Vector3 Scaler = transform.localScale;
    Scaler.x *= -1;
    transform.localScale = Scaler;
    _gun.Flip(moveInput.x);
    }
    }
    Если я уберу facingRight = !facingRight; - то персонаж не поварачивается
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    K0TlK, Нет, не делаю флип на оружии
    ибо не знаю как)
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    K0TlK, void Update()
    {
    if(controlType == ControlType.PC)
    {
    moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
    }
    else if(controlType == ControlType.Android)
    {
    moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
    }
    moveVelocity = moveInput.normalized * speed;

    if(moveInput.x == 0)
    {
    anim.SetBool("isRunning", false);
    }
    else
    {
    anim.SetBool("isRunning", true);
    }
    if(!facingRight && moveInput.x > 0)
    {
    Flip();
    }
    else if(facingRight && moveInput.x < 0)
    {
    Flip();
    }
    }

    void FixedUpdate()
    {
    rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }

    private void Flip()
    {
    facingRight = !facingRight;
    Vector3 Scaler = transform.localScale;
    Scaler.x *= -1;
    transform.localScale = Scaler;
    }
    }
  • Как убрать инверсию при слежке за курсором?

    @GGWPKATASI Автор вопроса
    K0TlK, using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class gun : MonoBehaviour
    {
    public float offset;
    public GameObject bullet;
    public Transform shotPoint;

    private float timeBtwShots;
    public float startTimeBtwShots;

    void Update()
    {
    Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
    float rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0f, 0f, rotZ + offset);




    if (timeBtwShots <= 0)
    {
    if (Input.GetMouseButton(0))
    {
    Instantiate(bullet, shotPoint.position, transform.rotation);
    timeBtwShots = startTimeBtwShots;
    }
    }
    else
    {
    timeBtwShots -= Time.deltaTime;
    }

    }

    }