Движение по WayPoint-ам с помощью Mathf.Acos()

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

Движение по WayPoint-ам с помощью Mathf.Acos()

Сообщение Теоретик 10 авг 2012, 00:03

шарик двигается по waypointam и расчитывя угол поворта поворачивает
Untitled-1.jpg

вот теория как в школе учили через длинну (a и b) найти косинус а потом арккосинус
Untitledмс-1.jpg

светильники это waypoint
Untitledмс-1.jpg

проблема в том что шарик поворачивается не правельно
Синтаксис:
Используется javascript
var Way:Transform;
var Sphere:Transform;

private var VertexX:float;
private var VertexZ:float;
var Point:int;
var a:float;
var b:float;
var first:boolean;
function Update(){
        if(Vector3.Distance(Sphere.position,Way.GetChild(Point).position)<2){
                Point=Point+1;
                first=true;
        }
        Sphere.rotation.y=Angle(first);
        Sphere.Translate(0.05,0,0);
}
function Angle(f:boolean){
                VertexX = Sphere.position.x;
                VertexZ = Way.GetChild(Point).position.z;
                a=Mathf.Sqrt(MathfSqr(VertexX-Sphere.position.x)+MathfSqr(VertexZ-Sphere.position.z));
                b=Mathf.Sqrt(MathfSqr(Way.GetChild(Point).position.x-Sphere.position.x)+MathfSqr(Way.GetChild(Point).position.z-Sphere.position.z));
                v=Mathf.Acos(Mathf.Cos(a/b));
                if(f==true){
                        return v;
                        first=false;
                }
}
function MathfSqr(x:float){
        x=x*x;
        return x;
}
 
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
Теоретик
UNец
 
Сообщения: 23
Зарегистрирован: 19 июн 2012, 21:57

Re: Движение по WayPoint-ам с помощью Mathf.Acos()

Сообщение waruiyume 10 авг 2012, 01:46

Синтаксис:
Используется javascript
Sphere.rotation.y=Angle(first);

Rotation- это кватернион, а не эйлер.

Vector3.Angle
Quaternion
Quaternion.Euler
Quaternion.LookRotation
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Движение по WayPoint-ам с помощью Mathf.Acos()

Сообщение Теоретик 10 авг 2012, 10:36

я понял что тогда ошибка была из за того что в ротатион не по градусам так или нет или что?
а по подробнее про Quaternion я написал как в справке и он тупо прямо едит может объясните что к чему
Синтаксис:
Используется javascript
var Way:Transform;
var Sphere:Transform;
var Vertex:Transform;

private var VertexX:float;
private var VertexZ:float;
var Point:int;
var A:float;
var B:float;
var v:float;
function Update(){
        if(Vector3.Distance(Sphere.position,Way.GetChild(Point).position)<2)Point=Point+1;
        Sphere.Translate(0.1,0,0);
        Sphere.rotation=Quaternion.Euler(Vector3(0, Angle(), 0));
}
function Angle(){
        Vertex.position.z = Way.GetChild(Point).position.z;
        Vertex.position.x = Sphere.position.x;
        A=MathfDlinna(Vertex.position.x,Sphere.position.x,Vertex.position.z,Sphere.position.z);
        B=MathfDlinna(Way.GetChild(Point).position.x,Sphere.position.x,Way.GetChild(Point).position.z,Sphere.position.z);
        return Mathf.Acos(Mathf.Cos(A/B));
}
function MathfDlinna(a2:float,a1:float,b2:float,b1:float){
        return Mathf.Sqrt(MathfSqr(a2-a1)+MathfSqr(b2-b1));
}
function MathfSqr(a:float){
        return a*a;
}
 
Аватара пользователя
Теоретик
UNец
 
Сообщения: 23
Зарегистрирован: 19 июн 2012, 21:57


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

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

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