Как правильно перевернуть объект?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как правильно перевернуть объект?

Сообщение Sice 31 июл 2023, 15:55

Есть персонаж, он двигается с разные стороны, в зависимости от направления, я меняю ему Flip, на этом персонаже, в дочерних объектах есть Healthbar Canvas полоса со здоровьем, которая прикреплена к нему, в Healthbar Canvas так же есть дочерние объекты соответственно. Не могу понять, как сделать так, чтобы флипался персонаж, но Healthbar Canvas оставался в той же проекции и не переворачивался ?
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Enemy : MonoBehaviour
{
    public float health = 100f;
    public Slider sliderHP;
    public GameObject[] HeadObject;

    public Transform[] spawnPoints;
    public float movementSpeed = 2f;
    public float timeToWaitAtSpawn = 2f;
    public Animator animator;

    private int currentSpawnPointIndex = 0;
    private bool isMoving = true;
    private bool isFacingRight = true;

    private void Start()
    {
        int randomHeadObject = Random.Range(0, 5);

        if (randomHeadObject == 0)
            HeadObject[0].SetActive(true);
        else if (randomHeadObject == 1)
            HeadObject[1].SetActive(true);

        sliderHP.value = health / 100f;

        MoveToNextSpawnPoint();
    }

    void Update()
    {
        if (isMoving)
            MoveTowardsSpawnPoint();

        FlipCharacter();
    }

    public void TakeDamage(int damage)
    {
        health -= damage;
        if (health <= 0)
        {
            health = 0;
            Destroy(sliderHP.gameObject);
            Destroy(gameObject);
        }
        sliderHP.value = health / 100f;
    }

    private void MoveTowardsSpawnPoint()
    {
        Vector3 targetPosition = new Vector3(spawnPoints[currentSpawnPointIndex].position.x, transform.position.y, transform.position.z);
        transform.position = Vector3.MoveTowards(transform.position, targetPosition, movementSpeed * Time.deltaTime);

        if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
        {
            isMoving = false;
            animator.SetBool("Target", true);
            StartCoroutine(MoveToNextSpawnPointAfterDelay());
        }
        else
        {
            animator.SetFloat("Move", 1f);
            animator.SetBool("Target", false);
        }
    }

    private IEnumerator MoveToNextSpawnPointAfterDelay()
    {
        yield return new WaitForSeconds(timeToWaitAtSpawn);

        currentSpawnPointIndex = Random.Range(0, spawnPoints.Length);
        isMoving = true;
    }

    private void MoveToNextSpawnPoint()
    {
        currentSpawnPointIndex = Random.Range(0, spawnPoints.Length);
        Vector3 targetPosition = new Vector3(spawnPoints[currentSpawnPointIndex].position.x, transform.position.y, transform.position.z);
        transform.position = targetPosition;
    }

    private void FlipCharacter()
    {
        if (isMoving)
        {
            if (transform.position.x > spawnPoints[currentSpawnPointIndex].position.x && !isFacingRight)
            {
                Flip();
            }
            else if (transform.position.x < spawnPoints[currentSpawnPointIndex].position.x && isFacingRight)
            {
                Flip();
            }
        }
    }

    private void Flip()
    {
        isFacingRight = !isFacingRight;
        Vector3 newScale = transform.localScale;
        newScale.x *= -1;
        transform.localScale = newScale;
    }
}
 
Аватара пользователя
Sice
UNIт
 
Сообщения: 87
Зарегистрирован: 25 окт 2014, 13:51

Re: Как правильно перевернуть объект?

Сообщение 1max1 31 июл 2023, 16:44

Либо открепить канвас от объекта и привязать его через скрипт либо флипать и канвас тоже.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как правильно перевернуть объект?

Сообщение Alkos26Rus 31 июл 2023, 18:20

не проще визуал персонажа засунуть в отдельный дочерний объект и флипать его, а двигать родительский объект
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 23