Вращение выбранного объекта и его сохранение

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

Вращение выбранного объекта и его сохранение

Сообщение piligrin 04 фев 2013, 23:52

Здравствуйте. Использую для вращения объекта этот код.Всё прекрасно работает, но вращаются одновременно все объекты с тегом "Container".
Как сделать, чтобы вращался только тот объект, с которым сталкивается луч в данный момент?

Скрытый текст:
var rotationSpeed = 50.0;

function Update()
{
var hit : RaycastHit;
var ray : Ray = Camera.mainCamera.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));

if (Physics.Raycast (ray, hit, 100.0) && hit.collider.gameObject.tag == "Container")
{
if (Input.GetKey (KeyCode.LeftArrow))
{
var ydir = Input.GetAxis("Horizontal");
transform.Rotate(0,ydir * rotationSpeed * Time.deltaTime,0);
}
if (Input.GetKey (KeyCode.RightArrow))
{
var ydir1 = Input.GetAxis("Horizontal");
transform.Rotate( 0,ydir1 * rotationSpeed * Time.deltaTime ,0);
}
if (Input.GetKey (KeyCode.UpArrow))
{
var ydir2 = Input.GetAxis("Vertical");
transform.Rotate( ydir2 * rotationSpeed * Time.deltaTime,0,0);
}
if (Input.GetKey (KeyCode.DownArrow))
{
var ydir3 = Input.GetAxis("Vertical");
transform.Rotate( ydir3 * rotationSpeed * Time.deltaTime,0,0);
}
}
}
Последний раз редактировалось piligrin 08 фев 2013, 21:34, всего редактировалось 1 раз.
piligrin
UNITрон
 
Сообщения: 168
Зарегистрирован: 02 окт 2012, 18:25

Re: Вращение выбранного объекта

Сообщение Левш@ 05 фев 2013, 01:59

Синтаксис:
Используется javascript
hit.transform.Rotate(0,ydir * rotationSpeed * Time.deltaTime,0);
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Вращение выбранного объекта

Сообщение piligrin 05 фев 2013, 05:10

Спасибо.
piligrin
UNITрон
 
Сообщения: 168
Зарегистрирован: 02 окт 2012, 18:25

Re: Вращение выбранного объекта

Сообщение piligrin 08 фев 2013, 19:27

Помогите пожалуйста, как сюда добавить сохранение угла поворота: hit.transform.eulerAngles.
Скрытый текст:
void SaveBlocks()
{
GameObject[] allBlocks = GameObject.FindGameObjectsWithTag("Block");
string saveStr = "";
foreach (GameObject g in allBlocks)
{
Vector3 pos = g.transform.position;
saveStr += string.Format("{0}#{1}#{2}#{3};", pos.x, pos.y, pos.z, GetIdByMat(mat_container));
}
PlayerPrefs.SetString("blocks", saveStr);
PlayerPrefs.Save();
}
piligrin
UNITрон
 
Сообщения: 168
Зарегистрирован: 02 окт 2012, 18:25

Re: Вращение выбранного объекта

Сообщение piligrin 08 фев 2013, 19:39

Вообще-то я вот так пробовал:
Скрытый текст:
private var PlayerX : float;
private var PlayerY : float;
private var PlayerZ : float;
var Player : GameObject;
var PlayerPosition : Transform;
var eulerAngles : Vector3;
var saved = 0;

function Start() { loadstuff(); }

function Update()
{
PlayerX = (PlayerPosition.transform.eulerAngles.x);
PlayerY = (PlayerPosition.transform.eulerAngles.y);
PlayerZ = (PlayerPosition.transform.eulerAngles.z);

if(Input.GetKeyUp("k") && saved == 0)
{
saved = 1;
savestuff();
}

}

function savestuff()
{
PlayerPrefs.SetFloat("PlayerX", PlayerPosition.transform.eulerAngles.x);
PlayerPrefs.SetFloat("PlayerY", PlayerPosition.transform.eulerAngles.y);
PlayerPrefs.SetFloat("PlayerZ", PlayerPosition.transform.eulerAngles.z);
}

function loadstuff()
{
saved = 0;
PlayerPosition.transform.eulerAngles.x = (PlayerPrefs.GetFloat("PlayerX"));
PlayerPosition.transform.eulerAngles.y = (PlayerPrefs.GetFloat("PlayerY"));
PlayerPosition.transform.eulerAngles.z = (PlayerPrefs.GetFloat("PlayerZ"));
}

Но чувствую, что это совсем не правильно. Да и опять же, при повороте одного объекта, потом все объекты с этим тегом загружаются повёрнутыми. А привязать сюда hit не получается.
piligrin
UNITрон
 
Сообщения: 168
Зарегистрирован: 02 окт 2012, 18:25


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

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

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