Vector3.Lerp помогите разобраться.
Добавлено: 07 авг 2013, 17:38
здравствуйте, уважаемые форумчане! Очень прошу помочь решить одну проблему, т.к. найти решения сам я не смог. Искал в других местах, с тем же результатом, так что вы моя последняя надежда . Проблема вот в чем: не получается корректное сглаживание, все промежуточные кадры, созданные этой опцией всегда создаются на (0,0,0) координатах. Перерыл кучу примеров в интернете, в т. ч на англоязычных сайтах,но не смог найти хотябы простейший пример, как это работает. Если есть добрый человек, желающий помочь, буду жутко рад=). P.S. Прилагаю скрипт.
Спасибо за внимание.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class Control : Photon.MonoBehaviour {
public GameObject Player;
public Vector3 vec3 = Vector3.zero;
private float speed = 0f;
public float tm = 1.0f;
void Start ()
{
Player = (GameObject)this.gameObject;
}
void Update()
{
if (!photonView.isMine)
{
transform.position = Vector3.Lerp(transform.position, vec3, Time.deltaTime * 5);
}
Move();
}
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
stream.SendNext(transform.position);
}
else
{
vec3 = (Vector3)stream.ReceiveNext();
}
}
void Move()
{
{
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.LeftArrow))
{
vec3 = new Vector3(Player.transform.position.x ,Player.transform.position.y, Player.transform.position.z+speed);
tm -= 60.0f*Time.deltaTime;
Debug.Log(tm);
}
phe();
tre();
stop1();
}
}
void tre()
{
if (tm <= 0)
{
transform.position = vec3;
tm = 1;
}
}
void phe()
{
if (speed <= 1.5f)
{
speed = speed +0.002f;
}
}
void stop1()
{
if (Input.GetKeyUp(KeyCode.W))
{
speed = 0f;
}
}
}
using System.Collections;
public class Control : Photon.MonoBehaviour {
public GameObject Player;
public Vector3 vec3 = Vector3.zero;
private float speed = 0f;
public float tm = 1.0f;
void Start ()
{
Player = (GameObject)this.gameObject;
}
void Update()
{
if (!photonView.isMine)
{
transform.position = Vector3.Lerp(transform.position, vec3, Time.deltaTime * 5);
}
Move();
}
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
stream.SendNext(transform.position);
}
else
{
vec3 = (Vector3)stream.ReceiveNext();
}
}
void Move()
{
{
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.LeftArrow))
{
vec3 = new Vector3(Player.transform.position.x ,Player.transform.position.y, Player.transform.position.z+speed);
tm -= 60.0f*Time.deltaTime;
Debug.Log(tm);
}
phe();
tre();
stop1();
}
}
void tre()
{
if (tm <= 0)
{
transform.position = vec3;
tm = 1;
}
}
void phe()
{
if (speed <= 1.5f)
{
speed = speed +0.002f;
}
}
void stop1()
{
if (Input.GetKeyUp(KeyCode.W))
{
speed = 0f;
}
}
}
Спасибо за внимание.