При вложении камеры как дочерний объект, в объект игрока, камера с объектом улетают всегда в одну и ту же сторону

На stackoverflow я смог найти код который почти фиксит это, с этим скриптом объект с камерой не улетают, пока не ударятся о другой объект, или не упадут с платформы.

Код который почти фиксит это:

using UnityEngine;
using System.Collections;

public class FollowCamera : MonoBehaviour {

    public GameObject player; // тут объект игрока
    private Vector3 offset;  

    void Start () 
    {        
        offset = transform.position - player.transform.position;
    }

    void LateUpdate () 
    {        
        transform.position = player.transform.position + offset;
    }
}

Остальной код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class control : MonoBehaviour
{
    Rigidbody2D rb;
    public GameObject rbtn; // правая кнопка
    public GameObject lbtn; // левая кнопка
    public GameObject sbtn; // пробел
    float posrbtn; // позиция правой кнопки
    float poslbtn; // позиция левой кнопки
    float posspace;// позиция пробела
    float speed;
    bool look;

    void Start()
    {
        posrbtn = rbtn.transform.position.y;
        poslbtn = lbtn.transform.position.y;
        posspace = sbtn.transform.position.y;
        // изначальные позиции всех кнопок, если кнопка сдвигается то объкт перемещяется 
        rb = GetComponent<Rigidbody2D>();
    }
    void FixedUpdate()
    {

        if (posrbtn != rbtn.transform.position.y)// правая кнопка
        {
            look = true;
            Flip();
            speed = 3f;
        }

        else if (poslbtn != lbtn.transform.position.y)// левая кнопка
        {
            look = false;
            Flip();
            speed = -3f;
        }

        else
        {
            speed = 0f;
        }

        rb.velocity = new Vector2(speed, rb.velocity.y);

        if (posspace != sbtn.transform.position.y)// пробел
        {
            rb.AddForce(transform.up * 1f, ForceMode2D.Impulse);
        }
    }
    void Flip()// функция разворачивает объект в соотвецтвии с нажатой кнопкой 
    {
        if (look == true)
        {
            transform.localRotation = Quaternion.Euler(0, 0, 0);
        }
        if (look == false)
        {
            transform.localRotation = Quaternion.Euler(0, 180, 0);
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;

public class btns : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        transform.position = new Vector2(transform.position.x, transform.position.y + 0.1f);// чуть-чуть смещяет кнопку 
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        transform.position = new Vector2(transform.position.x, transform.position.y - 0.1f);// возвращяет в изначальное положение
    }

}

При нахождении игрока просто на поверхности ничего не происходит, но при столкновении с ящиком он начинает взлетать как на втором скриншоте.

введите сюда описание изображения

введите сюда описание изображения


Ответы (0 шт):