【发布时间】:2020-05-02 15:27:25
【问题描述】:
我的 3D 蛇克隆体出现抖动。
这是代码:
//movement
private Rigidbody rb;
public float force;
public float turnspeed;
//spawning
public int spawndelay;
public GameObject segment;
private List<Vector3> lastpos = new List<Vector3>();
private List<Quaternion> lastrotation = new List<Quaternion>();
private List<GameObject> segments = new List<GameObject>();
private int i = 1;
private void Start()
{
rb = GetComponent<Rigidbody>();
StartCoroutine(spawnseg());
}
private void Update()
{
lastpos.Insert(0, transform.position);
lastrotation.Insert(0, transform.rotation);
Move();
UpdateSegments();
}
//removed move function(uses rb.addforce and rb.addrelativetorque
private void FixedUpdate()
{
rb.velocity = (force * transform.forward * Time.deltaTime);
}
public void addnewSegment()
{
GameObject newsegment = Instantiate(segment, lastpos[spawndelay * i], lastrotation[spawndelay * i]);
segments.Add(newsegment);
newsegment.GetComponent<SegmentScript>().spawnint = spawndelay * i;
i++;
}
void UpdateSegments()
{
foreach(GameObject intsegment in segments)
{
intsegment.transform.position = lastpos[intsegment.GetComponent<SegmentScript>().spawnint];
intsegment.transform.rotation = lastrotation[intsegment.GetComponent<SegmentScript>().spawnint];
}
}
private IEnumerator spawnseg()
{
yield return new WaitForSeconds(3f);
addnewSegment();
StartCoroutine(spawnseg());
}
基本上我将所有最后的位置保存在列表中,然后让对象移动到列表中的下一个位置。 然而,即使直行,这些路段似乎也在原地抖动。
谢谢
【问题讨论】: