forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Физика (http://forum.boolean.name/forumdisplay.php?f=168)
-   -   Проблема с физикой шарика (http://forum.boolean.name/showthread.php?t=16396)

Zakk 26.02.2012 23:48

Проблема с физикой шарика
 
Всем доброго времени суток.Сделал передвижение для шарика кнопками,и привязал камеру к нему.Теперь когда шарик катается,вместе с ним переворачивается камера,как это исправить?

pax 27.02.2012 00:10

Ответ: Проблема с физикой шарика
 
Сделать вспомогательный объект, следующий за шариком. Камеру привязать к нему.

Lestar 27.02.2012 01:51

Ответ: Проблема с физикой шарика
 
Повесить на камеру, в паблик поле засунуть шар.
PHP код:

using System;
using UnityEngine;

public class 
TargetFollow MonoBehaviour
{
  
float deltaX;
  
float deltaY;
  
float deltaz;
  public 
GameObject targetObject;

  
void Start()
  {
    
deltaX transform.position.targetObject.transform.position.x;
    
deltaY transform.position.targetObject.transform.position.y;
    
deltaZ transform.position.targetObject.transform.position.z;
  }

  
void Update()
  {
    
transform.position = new Vector3(targetObject.transform.position.x+deltaX,targetObject.transform.position.y+deltaY,targetObject.transform.position.z+deltaZ);
  }



Zakk 29.02.2012 17:14

Ответ: Проблема с физикой шарика
 
Еще проблема.Нужно чтобы при нажатии клавиши число уменьшалось на 1.Код написал,но походу не так что то.Исправьте плиз.
Код:

#pragma strict
public var b1 : int = 2;

function Start () {

}

function Update () {

if( Input.GetButtonDown( "f" ) )
{
b1=(b1-1);

}

print("B"+b1);

}


Zakk 29.02.2012 17:16

Ответ: Проблема с физикой шарика
 
И еще вопрос,чем = отличается от == ?

pax 29.02.2012 17:26

Ответ: Проблема с физикой шарика
 
1.
PHP код:

if( Input.GetKeyDown(KeyCode.F) ) 

2. = присвоить, == сравнить

Zakk 29.02.2012 17:45

Ответ: Проблема с физикой шарика
 
Спасибо,все ок.А есть команда аналог команде из блица text?

pax 29.02.2012 17:53

Ответ: Проблема с физикой шарика
 
Если только вот эта:
http://unity3d.com/support/documenta...GUI.Label.html

Zakk 29.02.2012 18:46

Ответ: Проблема с физикой шарика
 
То что нужно)

Zakk 29.02.2012 19:41

Ответ: Проблема с физикой шарика
 
Где тут ошибка?
Код:

var f : GameObject;
var f1 : boolean=true;
function Start () {

}

function Update () {
if( input.GetKeyDown(keycode.e))
{
if (f1=true)
{
f.active=true;
else
f.active=false;
}
}
}


Lestar 29.02.2012 19:49

Ответ: Проблема с физикой шарика
 
PHP код:

if (f1==true

или
PHP код:

if(f1

Но я бы написал

PHP код:

f.active = (f1) ? true false


pax 29.02.2012 20:21

Ответ: Проблема с физикой шарика
 
Я бы написал ;)

PHP код:

f.active f1


Zakk 01.03.2012 13:37

Ответ: Проблема с физикой шарика
 
Опять нужна помощь)
При запуске ни каких ошибок не появляется,только число(b1) не увеличивается.
Код:

var flas : Transform;
var b1 : int=2;
function Update () {
var dist = Vector3.Distance(flas.position, transform.position);
if( Input.GetKeyDown(KeyCode.G))
{
if (dist<5)
{
b1=(b1+1);
}
}
}


pax 01.03.2012 15:01

Ответ: Проблема с физикой шарика
 
а чему равно расстояние dist ?

Zakk 01.03.2012 15:20

Ответ: Проблема с физикой шарика
 
В смысле?

pax 01.03.2012 15:33

Ответ: Проблема с физикой шарика
 
В смысле чтобы увеличивалось - надо чтобы dist было меньше 5. Так чему оно равно?

Zakk 01.03.2012 15:40

Ответ: Проблема с физикой шарика
 
var dist = Vector3.Distance(flas.position, transform.position); оно вроде как должно быть равно расстоянию между игроком и flas.Или эта команда не так работает?

pax 01.03.2012 15:41

Ответ: Проблема с физикой шарика
 
да, но чему она равна когда ты жмешь кнопку G?

PHP код:

var flas Transform;
var 
b1 int=2;
function 
Update () {
   var 
dist Vector3.Distance(flas.positiontransform.position);
   
Debug.Log("dist = "dist);
   if( 
Input.GetKeyDown(KeyCode.G))
   {
      if (
dist<5)
      {
        
b1=(b1+1);
      }
   }



Zakk 01.03.2012 15:44

Ответ: Проблема с физикой шарика
 
а разве имеет значение чему она равна в момент нажатия клавиши? Главное если это число меньше 5,должно выполнятся действие

pax 01.03.2012 15:45

Ответ: Проблема с физикой шарика
 
Вот и проверь, меньше ли оно. Я пример написал выше.

Zakk 01.03.2012 15:48

Ответ: Проблема с физикой шарика
 
The referenced script on this Behaviour is missing! Что это обозначает?

pax 01.03.2012 15:49

Ответ: Проблема с физикой шарика
 
Потерян скрипт на объекте, можно выбрать новый щелкнув на скрипте объекта.

Zakk 01.03.2012 15:54

Ответ: Проблема с физикой шарика
 
Debug.Log("dist = "+ dist);-c этой командой где дистанция до объекта должна отображаться?

pax 01.03.2012 15:55

Ответ: Проблема с физикой шарика
 
В консоли, либо в статусной строке Unity (в самом низу)

Zakk 01.03.2012 15:56

Ответ: Проблема с физикой шарика
 
в этой статусной строке написано "The referenced script on this Behaviour is missing!" и не очень понятно как от этого избавиться

pax 01.03.2012 15:58

Ответ: Проблема с физикой шарика
 
Щелкни по ней чтобы открылась консоль, потом по самому сообщению. Должен выделиться проблемный объект, на котором скрипт потерян. На нем поправь ссылку на скрипт.

Zakk 01.03.2012 16:00

Ответ: Проблема с физикой шарика
 
Расстояние вообще ни где не отображается

pax 01.03.2012 16:01

Ответ: Проблема с физикой шарика
 
Уверен что скрипт висит на объекте в сцене?

Zakk 01.03.2012 16:01

Ответ: Проблема с физикой шарика
 
уверен

pax 01.03.2012 16:02

Ответ: Проблема с физикой шарика
 
Уверен что этот скрипт не потерян? Попробуй сделать скрипту реимпорт. Может ты его не сохранил...

Zakk 01.03.2012 16:03

Ответ: Проблема с физикой шарика
 
сделал,все равно так же

pax 01.03.2012 16:04

Ответ: Проблема с физикой шарика
 
Скрипт включен? Объект Включен? (галочки в заголовке скрипта, в заголовке объекта)

Zakk 01.03.2012 16:06

Ответ: Проблема с физикой шарика
 
Да,вроде все включено

pax 01.03.2012 16:07

Ответ: Проблема с физикой шарика
 
Тогда не знаю чем помочь. Все возможные варианты я предложил.

Zakk 01.03.2012 16:08

Ответ: Проблема с физикой шарика
 
Даже если я пишу if (dist>1) то все равно не работает.

pax 01.03.2012 16:10

Ответ: Проблема с физикой шарика
 
Там условие уже не важно, если в консоль не выводит расстояния. Не работает сам скрипт.

Zakk 01.03.2012 16:11

Ответ: Проблема с физикой шарика
 
В этом скрипте кроме этого еще много чего написано и все работает.

pax 01.03.2012 16:12

Ответ: Проблема с физикой шарика
 
покажи весь скрипт

Zakk 01.03.2012 16:14

Ответ: Проблема с физикой шарика
 
PHP код:

#pragma strict
var b1 int 2;
var 
hp int 60;
var 
flas Transform;
var 
sw Transform;
var 
mech GameObject;
var 
swo boolean=false;
var 
flasm GameObject;





function 
Start () {

}

function 
Update () {

if( 
Input.GetKeyDown(KeyCode.F) ) 
{
if (
b1>0)
{
if (
hp<100)
{
b1=(b1-1);
hp=(hp+20);
}
}
if (
hp>100){
hp=100;
}
}


var 
dist Vector3.Distance(flas.positiontransform.position);
     print (
"Distance to other: " dist);
if( 
Input.GetKeyDown(KeyCode.G))
{
if (
flasm.active==true)
{
if (
dist>2)
{
flasm.active=false;
b1=(b1+1);
}
}
}



var 
dists Vector3.Distance(sw.positiontransform.position);


if( 
Input.GetKeyDown(KeyCode.Q))
{

if (
dists<4)
{
mech.active=false;
}
}

}


}
function 
OnGUI () {
    
GUI.Label Rect (105010020), "Фласки "+b1);
GUI.Label Rect (10,10,100,20), "Здоровье "+hp);




pax 01.03.2012 16:18

Ответ: Проблема с физикой шарика
 
и что "Distance to other: " + dist не выводит в консоль?

flasm.active==true - это верное условие?

Zakk 01.03.2012 16:23

Ответ: Проблема с физикой шарика
 
1.Не выводит
2.Вообще надо так:Если предмет active=true то условие выполняется,если нет,то нет. Но так выводит ошибку.Так что сделал active==true=)

pax 01.03.2012 16:25

Ответ: Проблема с физикой шарика
 
У меня нет больше предположений.

Разве что у тебя на объекте висит другой похожий скрипт...

Zakk 01.03.2012 16:30

Ответ: Проблема с физикой шарика
 
Решил проблему..В коде был лишний знак {

pax 01.03.2012 16:32

Ответ: Проблема с физикой шарика
 
Тогда в консоли должна была быть ошибка. и В том коде, что ты привел вроде со скобками все нормально. Хотя если только тот, который перед OnGUI...

Вывод: учись форматировать программу.

Zakk 01.03.2012 16:45

Ответ: Проблема с физикой шарика
 
Я просто со скобками что то намудрил,и не так работало как надо,сейчас все норм вроде.

Zakk 01.03.2012 16:51

Ответ: Проблема с физикой шарика
 
Спасибо за помощь)

Zakk 01.03.2012 19:35

Ответ: Проблема с физикой шарика
 
А в GUI.Label как можно размер текста увеличить?

pax 02.03.2012 02:26

Ответ: Проблема с физикой шарика
 
PHP код:

var font:Font;


function 
OnGUI()
{
  var 
styleGUIStyle = new GUIStle(GUI.skin.label);
  
style.font font;

  ...
  
  
GUI.Label(rect"text"style);


Добавить шрифт в проект можно добавлением в него ttf файла. Дальше надеюсь понятно что делать.

Вообще почитай мой тутор. В разделе про меню это есть.

Zakk 02.03.2012 08:57

Ответ: Проблема с физикой шарика
 
Что то не понятно как юзать Renderer.isVisible.Нужно чтобы если объект видно в камеру,выполнялось действие.Не понятно как указывать объект,который проверятся должен на видимость..

Lestar 02.03.2012 09:40

Ответ: Проблема с физикой шарика
 
PHP код:

public GameObject target;

void Update()
{
 if(
target.renderer.isVisible)
 {
   
// Действия
 
}



Zakk 02.03.2012 14:37

Ответ: Проблема с физикой шарика
 
Нужно чтобы объект поворачивался (смотрел) на камеру.Как я понял нужно использовать transform.LookAt().Но почему то ошибка появляется.
PHP код:

var abc Transform;
function 
Update() {
    
transform.LookAt(abc);


No appropriate version of 'UnityEngine.Transform.LookAt' for the argument list '(float)' was found.

pax 02.03.2012 14:50

Ответ: Проблема с физикой шарика
 
В приведенном коде нет ошибок, проверь тип переменной в своем скрипте. Ты вероятно его не указал, либо переменную пересоздал в функции или еще что...

Taugeshtu 02.03.2012 15:50

Ответ: Проблема с физикой шарика
 
Возможная грабля:
Сначала переменная была другого типа (например, GameObject), потом ты её в редакторе навесил, изменил скрипт с GO на Transform и получил несоответсвие типов, которое выявляется только в рантайме.
(Я на такое один раз напоролся)

pax 02.03.2012 15:58

Ответ: Проблема с физикой шарика
 
Ни разу такого не было на C#

Zakk 02.03.2012 16:25

Ответ: Проблема с физикой шарика
 
Все исправил теперь работает,только не так как хотелось бы.Этот скрипт надо вешать на тот объект который будет поворачиваться,или на тот к которому будет поворачиваться?

pax 02.03.2012 16:30

Ответ: Проблема с физикой шарика
 
Данный скрипт надо вешать на тот который поворачивается.

Zakk 02.03.2012 16:41

Ответ: Проблема с физикой шарика
 
Из за чего тот объект который должен поворачиваться наклонен на 45 градусов? скрин

pax 02.03.2012 16:46

Ответ: Проблема с физикой шарика
 
Ось объекта, смотрящая вверх - ось Y?

Zakk 02.03.2012 16:51

Ответ: Проблема с физикой шарика
 
Да вроде как

pax 02.03.2012 16:53

Ответ: Проблема с физикой шарика
 
А ось Z объекта смотрит вперед? Переключись в локальные координаты и посмотри точно.

Zakk 02.03.2012 16:55

Ответ: Проблема с физикой шарика
 
Да,вперед смотрит.

pax 02.03.2012 16:57

Ответ: Проблема с физикой шарика
 
Тогда должно быть все нормально. Только вектор transform.forward по y обнули после поворота.

Zakk 02.03.2012 17:01

Ответ: Проблема с физикой шарика
 
как?

pax 02.03.2012 18:42

Ответ: Проблема с физикой шарика
 
PHP код:

var fwdVector3 transform.forward;
fwd.y=0;
transform.forward fwd

а вообще на js вроде можно сразу...
PHP код:

transform.forward.0



Часовой пояс GMT +4, время: 19:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot