Смещение камеры по оси Х

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

Re: Смещение камеры по оси Х

Сообщение nurbolg 07 ноя 2019, 18:54

1max1 писал(а):Ну так смещай ее в коде, где у тебя кнопки нажимаются.

как смещать помогите! :(
nurbolg
UNIт
 
Сообщения: 67
Зарегистрирован: 26 окт 2019, 12:19

Re: Смещение камеры по оси Х

Сообщение nurbolg 11 ноя 2019, 20:28

1max1 писал(а):Ну так смещай ее в коде, где у тебя кнопки нажимаются.

Можете помочь как смещать, не получилось
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

class PlayerControl : MonoBehaviour
{
        [SerializeField] float force = 2.7f;
        [SerializeField] float jump = 8.8f;
        [SerializeField] GameObject StartGround;
        [SerializeField] AudioClip NiceScore;

        [SerializeField] Camera Camera;
        [SerializeField] float offsetX = 10.0f;
        [SerializeField] float intens = 5.0f;

        Rigidbody2D rb2D;


        void Start()
        {
                rb2D = GetComponent<Rigidbody2D> ();
                rb2D = Camera.GetComponent<Rigidbody2D> ();
        }

        void LeftTap()
            {
                rb2D.velocity += (Vector2.up) * jump;
                rb2D.velocity += (Vector2.up + Vector2.left) * force;
                Destroy (StartGround);

                var newPos = Camera.transform.position + Vector3.left * rb2D.velocity.normalized.x * offsetX;
                newPos.z = transform.position.z;
                transform.position = Vector3.Lerp(transform.position, newPos, intens * Time.deltaTime);
                }

        void RightTap()
        {
                rb2D.velocity += (Vector2.up) * jump;
                rb2D.velocity += (Vector2.up + Vector2.right) * force;
                Destroy (StartGround);

                var newPos = Camera.transform.position + Vector3.right * rb2D.velocity.normalized.x * offsetX;
                newPos.z = transform.position.z;
                transform.position = Vector3.Lerp(transform.position, newPos, intens * Time.deltaTime);
                }
               
        private void OnTriggerEnter2D(Collider2D other)
        {
                Score.score++;
                if (other.gameObject.CompareTag ("AddScore")) {
                        Destroy (other.gameObject);
                }
                if (Score.score % 10 == 0)
                {
                        GetComponent<AudioSource> ().clip = NiceScore;
                        GetComponent<AudioSource> ().Play ();
                }
        }

}
nurbolg
UNIт
 
Сообщения: 67
Зарегистрирован: 26 окт 2019, 12:19

Re: Смещение камеры по оси Х

Сообщение 1max1 11 ноя 2019, 20:43

Синтаксис:
Используется csharp
transform.position = Vector3.Lerp(transform.position, newPos, intens * Time.deltaTime);

Здесь ты смещаешь не камеру, а сам объект, и причем очень незначительно. Можно сделать резкое смещение без лерпа:
Синтаксис:
Используется csharp
var newPos = Camera.transform.position + Vector3.right * rb2D.velocity.normalized.x * offsetX;
newPos.z = Camera.transform.position.z;
Camera.transform.position = newPos;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смещение камеры по оси Х

Сообщение arahis 11 ноя 2019, 23:33

Народ а можно сделать типа&
camera.transform=transform.LookAt(gamer.transform)+Vector3(...)
(popcorn1)
Аватара пользователя
arahis
UNIт
 
Сообщения: 58
Зарегистрирован: 02 ноя 2011, 23:18
Откуда: Центральная Украина

Re: Смещение камеры по оси Х

Сообщение 1max1 11 ноя 2019, 23:51

arahis писал(а):Народ а можно сделать типа&
camera.transform=transform.LookAt(gamer.transform)+Vector3(...)
(popcorn1)

В 2д игре? Хм...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смещение камеры по оси Х

Сообщение nurbolg 14 ноя 2019, 15:22

1max1 писал(а):
Синтаксис:
Используется csharp
transform.position = Vector3.Lerp(transform.position, newPos, intens * Time.deltaTime);

Здесь ты смещаешь не камеру, а сам объект, и причем очень незначительно. Можно сделать резкое смещение без лерпа:
Синтаксис:
Используется csharp
var newPos = Camera.transform.position + Vector3.right * rb2D.velocity.normalized.x * offsetX;
newPos.z = Camera.transform.position.z;
Camera.transform.position = newPos;

Спасибо! :-bd

А можно и как сделать так чтобы когда персонаж прыгнет в левую сторону и дойдет до -6,5 по оси Х камера сместится влево, если прыгнет в правую сторону и дойдет до +2,5 по оси Х камера сместится в правую сторону, и когда персонаж будет находиться по центру по например -2,4 по оси Х чтобы камера вернулась в исходное положение, изначально камера стоит по центру в -2,4 по Х.
nurbolg
UNIт
 
Сообщения: 67
Зарегистрирован: 26 окт 2019, 12:19

Пред.

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

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

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