Как вернуть камеру на начальную позицию?

Программирование на Юнити.

Как вернуть камеру на начальную позицию?

Сообщение KiR_Ka 10 дек 2018, 14:17

Вообщем, делаю разброс.
При нажатии левой кнопки мыши камера поворачивается на рандомный x и y,потом пускается raycast.
Таким образом я реализовал разброс, НО, после того как камера повернулась на рандомные значения, мне нужно вернуть её обратно на начальную позицию.
Подскажите как сделать это!
Вот скрипт:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RifleB : MonoBehaviour {

    private Camera _camera;
    void Start()
    {
        _camera = GetComponent<Camera>();
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            transform.Rotate(Random.Range(-2, 2), Random.Range(-2, 2), 0);
            Vector3 point = new Vector3(
            _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
            Ray ray = _camera.ScreenPointToRay(point);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                StartCoroutine(SphereIndicator(hit.point));
                transform.Rotate(0, 0, 0);
            }
        }
    }
        private IEnumerator SphereIndicator(Vector3 pos)
        {
            GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            sphere.transform.position = pos;
            yield return new WaitForSeconds(1);
            Destroy(sphere);
        }
    }
KiR_Ka
UNец
 
Сообщения: 13
Зарегистрирован: 07 дек 2018, 00:55
Откуда: Тюмень
Skype: Kote Kotin

Re: Как вернуть камеру на начальную позицию?

Сообщение Ziza 10 дек 2018, 14:23

Прикольный подход к разбросу) Даже эффект от отдачи делать не надо, все из коробки)
Просто запоминайте предыдущий поворот и возвращайте. Как-то так:
Синтаксис:
Используется csharp
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var currentRotate = transform.rotation;
            transform.Rotate(Random.Range(-2, 2), Random.Range(-2, 2), 0);
            Vector3 point = new Vector3(
            _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
            Ray ray = _camera.ScreenPointToRay(point);
            transform.rotation = currentRotate;
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                StartCoroutine(SphereIndicator(hit.point));
                transform.Rotate(0, 0, 0);
            }
        }
    }
 
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Как вернуть камеру на начальную позицию?

Сообщение 1max1 10 дек 2018, 14:24

Синтаксис:
Используется csharp
var oldRotation = tr.rotation;
// Вращаем, что-то делаем...
tr.rotation = oldRotation;


Ziza, какой ты шустрый :ymdevil:
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как вернуть камеру на начальную позицию?

Сообщение KiR_Ka 10 дек 2018, 14:26

Ziza писал(а):Прикольный подход к разбросу) Даже эффект от отдачи делать не надо, все из коробки)
Просто запоминайте предыдущий поворот и возвращайте. Как-то так:
Синтаксис:
Используется csharp
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var currentRotate = transform.rotation;
            transform.Rotate(Random.Range(-2, 2), Random.Range(-2, 2), 0);
            Vector3 point = new Vector3(
            _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
            Ray ray = _camera.ScreenPointToRay(point);
            transform.rotation = currentRotate;
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                StartCoroutine(SphereIndicator(hit.point));
                transform.Rotate(0, 0, 0);
            }
        }
    }
 

Импровизирую.
KiR_Ka
UNец
 
Сообщения: 13
Зарегистрирован: 07 дек 2018, 00:55
Откуда: Тюмень
Skype: Kote Kotin

Re: Как вернуть камеру на начальную позицию?

Сообщение Ziza 10 дек 2018, 14:27

1max1 писал(а):Ziza, какой ты шустрый :ymdevil:

Выходной :)) Все ухожу, оставляю все на тебя))
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2