| 
	
		
		
			| Смена положения камеры |  |  |  | 
| Gidly | Дата: Среда, 01 Августа 2018, 13:06 | Сообщение # 1 |  |   был не раз Сейчас нет на сайте | Тема такая: У меня есть стандартная фри-лук камера, мне нужно, чтобы на пкм пивот(пустой ГеймОбджект, за которым следит камера) менял свою позицию, и соответственно когда нажали ЕЩЁ раз на пкм он возвращался в исходное положение. Саму камеру перемещать не вариант, она хоть на конец карты ее позицию поменяй ничего не изменится. Так вот, главное чтобы было не просто GetMouseButton, а GetMouseButtonUp или в крайнем случает GetMouseButtonDown. Спасибо! |  |  |  |  |  | 
| Minskii | Дата: Среда, 01 Августа 2018, 15:38 | Сообщение # 2 |  |   участник Сейчас нет на сайте | Если камеру перемещать не вариант, значит она либо внутри какого-то объекта на сцене, либо на другой сцене. Я бы просто сделал вторую камеру и переключение на пкм. 
 Добавлено (01 Августа 2018, 15:41)
 ---------------------------------------------
 Вот подходящая статья
 
 Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.
 Java/Kotlin, C#, C++.
 Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
 
 
 Сообщение отредактировал Minskii - Среда, 01 Августа 2018, 15:43 |  |  |  |  |  | 
| Gidly | Дата: Среда, 01 Августа 2018, 15:59 | Сообщение # 3 |  |   был не раз Сейчас нет на сайте | Нет, так тоже не вариант, в стандартной камере 3 объекта, фри-лук камера риг со всякими скриптами, сам пивот и в нем камера. Смена камеры не вариант потому что у моей основной камеры есть объект TargetRotate к которому будет поворачиваться персонаж при повороте камеры, это не стандартный перс, а мой. Смена камеры у меня приводит к тому, что работают сразу 2 камеры, одна собственно с TargetRotate-ом, а другая на нужном месте. Это приводит к потере 20 фпс! |  |  |  |  |  | 
| Minskii | Дата: Среда, 01 Августа 2018, 21:04 | Сообщение # 4 |  |   участник Сейчас нет на сайте | Я вообще мало что сейчас понял, но камеры в Unity можно отключать.В статье которую я скинул про это есть. Откуда Вы число в 20 фпс вытянули я не представляю...
 
 Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.
 Java/Kotlin, C#, C++.
 Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
 
 
 Сообщение отредактировал Minskii - Среда, 01 Августа 2018, 21:13 |  |  |  |  |  | 
| Gidly | Дата: Четверг, 02 Августа 2018, 09:54 | Сообщение # 5 |  |   был не раз Сейчас нет на сайте | НУ смотри. У меня есть скрипт на то, чтобы персонаж бегал туда, куда смотрит камера. И также скрипт на прицеливание по всем осям, то есть перс может целиться вверх, вниз, и вправо-влево, куда смотрит камера. Дочерний объект камеры-пустышка, к которой собственно и стремится персонаж. Я пробовал искать варианты со сменой камеры, и также пробовал менять ту пустышку на ту, которая на 2-ой камере(Я камеру продублировал, просто позицию поменял). Перс стал неадекватно целиться вверх и смотреть на камеру. Я смотрел будучи в игровом режиме на сцену, и видел что показывала игру 2 камера, но при этом первая не выключилась. Я смотрел на статистику игрового режива, где в правом верхнем углу вкладка, рядом с Gizmos вроде, там fps и нагрузку на сис-му показано, при прицеливании все параметры резко подлетали из-зи того, что,повторюсь снимают 2 камеры. Пишите что не понятно |  |  |  |  |  | 
| Minskii | Дата: Четверг, 02 Августа 2018, 10:25 | Сообщение # 6 |  |   участник Сейчас нет на сайте | Ну тогда просто сделай bool переменную. При нажатии, если она true, то пивот передвигается в точку Б а переменная становится false. Иначе пивот передвигается в точку А и переменная становится true. Первоначальные координаты можно сохранять в какие нибудь переменные пока bool = true. 
 Добавлено (02 Августа 2018, 10:41)
 ---------------------------------------------
 
 Код bool newpos = true;
 if (Input.GetKeyDown (KeyCode.Mouse1))//при нажатии ПКМ
 {
 if newpos = true
 {
 //меняешь тут положение пивота я не знаю к мышке у тебя или в фиксированную позицию
 newpos=false;
 }
 else
 {
 //возвращаешь пивот по старым координатам,можно просто записывать вектора в переменные пока newpos=true если каждый раз точка А меняется
 newpos=true;
 }
 }
 
 Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров.
 Java/Kotlin, C#, C++.
 Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
 
 
 Сообщение отредактировал Minskii - Четверг, 02 Августа 2018, 10:45 |  |  |  |  |  | 
| Gidly | Дата: Воскресенье, 05 Августа 2018, 00:26 | Сообщение # 7 |  |   был не раз Сейчас нет на сайте | Цитата Minskii (  )  Ну тогда просто сделай bool переменную. При нажатии, если она true, то пивот передвигается в точку Б а переменная становится false. Иначе пивот передвигается в точку А и переменная становится true. Первоначальные координаты можно сохранять в какие нибудь переменные пока bool = true.
 Слушай, у меня почти получилось, я добавил необходимые строки, но если я один раз кликнул мышкой камера просто дергается-переходит в нужную позицию и тут же возвращается. Как это исправить?
 Вот скрипт
 Код using System.Collections;using System.Collections.Generic;
 using UnityEngine;
 
 public class CameraAim : MonoBehaviour {
 
 public GameObject m_camera;
 public Vector3 newPos;
 public Vector3 startPos;
 bool newpos = true;
 
 void Update()
 {
 startPos = m_camera.transform.position;
 if (Input.GetKeyDown(KeyCode.Mouse1))
 {
 if (newpos == true)
 {
 m_camera.transform.position = new Vector3(transform.position.x + 0.583f, transform.position.y + 1.304f, transform.position.z + 0.46f); ;
 newpos = false;
 }
 }
 else
 {
 m_camera.transform.position = new Vector3(transform.position.x, transform.position.y + 1.304f, transform.position.z - 0.173f);
 newpos = true;
 }
 }
 }
 
 
 Сообщение отредактировал Gidly - Воскресенье, 05 Августа 2018, 00:26 |  |  |  |  |  | 
| Navarh | Дата: Воскресенье, 05 Августа 2018, 01:26 | Сообщение # 8 |  |   частый гость Сейчас нет на сайте | Gidly, В Юнити не работаю, но логика,по идее, такая должна быть: Добавлено (05 Августа 2018, 01:40)---------------------------------------------
 
 Код void Update()
 {
 if (Input.GetKeyDown(KeyCode.Mouse1))
 {
 if (newpos == true)
 {
 startPos = m_camera.transform.position;
 m_camera.transform.position = new Vector3(transform.position.x + 0.583f, transform.position.y + 1.304f, transform.position.z + 0.46f);
 newpos = false;
 }
 else
 {
 m_camera.transform.position = startPos;
 newpos = true;
 }
 }
 }
 
 
 Сообщение отредактировал Navarh - Воскресенье, 05 Августа 2018, 01:39 |  |  |  |  |  | 
| Gidly | Дата: Воскресенье, 05 Августа 2018, 11:47 | Сообщение # 9 |  |   был не раз Сейчас нет на сайте | Я решил отказаться от этой идеи по причине более хорошей работы грамотной смены камеры. Но проблема опять в том, что мне нужно не GetMouseButton, а GetMouseButtonUp или GetMouseButtonDown, но при попытке это использовать всё опять дергается. Я понимаю, что тут нужна boolean переменная, но скрипт написан на JavaScript, а с ним я не дружу Вот он:
 Код var camera1: Camera;var camera2: Camera;
 
 camera1.enabled = true;
 camera2.enabled = false;
 
 function Update() {
 if (Input.GetMouseButton(1)) {
 if (camera2.enabled == false)
 camera2.enabled = true;
 camera1.enabled = false;
 }
 else {
 camera2.enabled = false;
 camera1.enabled = true;
 }
 }
 
 Сообщение отредактировал Gidly - Воскресенье, 05 Августа 2018, 12:35 |  |  |  |  |  | 
| Navarh | Дата: Воскресенье, 05 Августа 2018, 20:23 | Сообщение # 10 |  |   частый гость Сейчас нет на сайте | Gidly, Ты "else" не к тому "if" "цепляешь" Добавлено (05 Августа 2018, 20:26)---------------------------------------------
 Gidly,
 
 Код function Update() {
 if (Input.GetMouseButton(1))
 {
 if (camera2.enabled == false)
 {
 camera2.enabled = true;
 camera1.enabled = false;
 }
 else
 {
 camera2.enabled = false;
 camera1.enabled = true;
 }
 }
 }
 
 
 Сообщение отредактировал Navarh - Воскресенье, 05 Августа 2018, 20:26 |  |  |  |  |  | 
| Gidly | Дата: Воскресенье, 05 Августа 2018, 22:32 | Сообщение # 11 |  |   был не раз Сейчас нет на сайте | Цитата Navarh (  )  Gidly, Ты "else" не к тому "if" "цепляешь"Да, большое спасибо, помогло!
 
 
 Сообщение отредактировал Gidly - Воскресенье, 05 Августа 2018, 22:32 |  |  |  |  |  
 |