1. 程式人生 > >太空大戰背景移動的幾種方式

太空大戰背景移動的幾種方式

nbsp ria print for ans time set collect mes

1.

//兩張背景分開移動
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Background : MonoBehaviour {
    public float speed =1;//背景移動速度
   public float time1 = 0;
    public float startime=5;
    public GameObject bj1;
    public GameObject bj2;

    Vector3 vec1;
    Vector3 vec2;
    
// Use this for initialization void Start() { vec1 = bj1.transform.position; vec2 = bj2.transform.position; // Update is called once per frame } void Update() { time1 += Time.deltaTime; bj1.transform.Translate(new Vector3(0, 0, -0.02f
* speed),Space.World); bj2.transform.Translate(new Vector3(0, 0, -0.02f * speed),Space.World); if (bj1.transform.position.z < -20) { bj1.transform.position = vec2; } if (bj2.transform.position.z < -20) { bj2.transform.position
= vec2; } } }

2.

兩張背景圖一起移動
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class back02 : MonoBehaviour {
    public float speed = 2;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        transform.Translate(new Vector3(0, 0, -0.02f*speed), Space.World);
        if (transform.position.z < 0)
        {
            transform.position = new Vector3(0, -5, 20);
        }
    }
}

3.材質移動

 public float speed = 0.25f;
    // Use this for initialization
    void Start () {
       // pos = transform.position;
    }
    
    // Update is called once per frame
    void Update () {

        float move = Time.time * speed;
        GetComponent<MeshRenderer>().material.mainTextureOffset = new Vector2(0,move);
        
    }

4.用MoveTowards

using UnityEngine;
using System.Collections;

public class GameGround : MonoBehaviour {
    public GameObject[] map;
    public Vector3 endsence ;
    public Vector3 startmountion;
    // Use this for initialization
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {
                movescene (map, endsence, 0.5f);
}
    void movescene(GameObject[] scene,Vector3 endsence,float speed)
    {
        foreach(GameObject mysence in scene){
            if(mysence!=null)
            {
                float dY=mysence.transform.localPosition.y-endsence.y;
                if(dY<0){
                    print (1);
                    mysence.transform.localPosition=startmountion+new Vector3(dY+0.05f,0,0);
                }
                mysence.transform.localPosition= Vector3.MoveTowards (mysence.transform.localPosition, new Vector3(0,-200f,0), Time.deltaTime *speed);
            }
        }

    }

}

太空大戰背景移動的幾種方式