Unity3d 类网格蛇系统

Unity3d 类网格蛇系统,unity3d,unity2d,Unity3d,Unity2d,全部。我试图完成的是一个简单的蛇的游戏,其中每个尾巴位置都遵循前面的尾巴位置。但出于某种原因,瓷砖沿着之前的尾部位置呈对角线移动,而不是像头部那样在网格系统中移动。这是我的密码 头部运动班 public float unitsPerFrame = 1; void Update(){ if (Input.GetKey(KeyCode.UpArrow) && downDir == false) { transform.localRota

全部。我试图完成的是一个简单的蛇的游戏,其中每个尾巴位置都遵循前面的尾巴位置。但出于某种原因,瓷砖沿着之前的尾部位置呈对角线移动,而不是像头部那样在网格系统中移动。这是我的密码

头部运动班

public float unitsPerFrame = 1;
void Update(){
    if (Input.GetKey(KeyCode.UpArrow) && downDir == false)
        {
            transform.localRotation = Quaternion.Euler(0, 0, 0);
            mDir = Vector3.up * unitsPerFrame;
        }
    } 
 void Update()
{
    tail[0].transform.position = Vector3.MoveTowards(tail[0].transform.localPosition, GameObject.Find("Player").transform.localPosition, 0.02f);
    for(int i = 1; i < tail.Count; i++)
    {
        tail[i].transform.position = Vector3.MoveTowards(tail[i].transform.localPosition, tail[i - 1].transform.localPosition, 0.02f);
        tail[i].transform.rotation = tail[i - 1].transform.rotation;
    }
}
。。。所有的方向都是一样的,我只是加入了这个,这样你就可以看到我的头是如何运动的

尾部运动类

public float unitsPerFrame = 1;
void Update(){
    if (Input.GetKey(KeyCode.UpArrow) && downDir == false)
        {
            transform.localRotation = Quaternion.Euler(0, 0, 0);
            mDir = Vector3.up * unitsPerFrame;
        }
    } 
 void Update()
{
    tail[0].transform.position = Vector3.MoveTowards(tail[0].transform.localPosition, GameObject.Find("Player").transform.localPosition, 0.02f);
    for(int i = 1; i < tail.Count; i++)
    {
        tail[i].transform.position = Vector3.MoveTowards(tail[i].transform.localPosition, tail[i - 1].transform.localPosition, 0.02f);
        tail[i].transform.rotation = tail[i - 1].transform.rotation;
    }
}
void Update()
{
tail[0].transform.position=Vector3.moveToward(tail[0].transform.localPosition,GameObject.Find(“Player”).transform.localPosition,0.02f);
for(int i=1;i

另外,为了澄清,我知道我使用的是Vector3,而我本应该使用vector2进行2D,但它现在运行正常,稍后我将对此进行更改。

Vector3的含义。MoveToward
=将当前的点朝着目标点直线移动。引用自
事实上,直线是最短的路径,在您的情况下是对角线,但是为了实现您的目标,您有几种选择:我将描述其中两种

  • tail x
    的位置替换为
    tail x-1
    示例:
    tail[i].transform.position=tail[i-1].transform.position
  • 使用线性插值(如果希望平铺之间平滑移动,请执行此操作)示例:
    tail[i].transform.position=Vector3.Lerp(tail[i].transform.position,tail[i-1].transform.position,Time.deltaTime)