При вложении камеры как дочерний объект, в объект игрока, камера с объектом улетают всегда в одну и ту же сторону
На 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);// возвращяет в изначальное положение
}
}


