码迷,mamicode.com
首页 > 移动开发 > 详细

太空大战背景移动的几种方式

时间:2018-09-08 16:52:58      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:object   time   local   pac   unity   eof   use   back   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);
            }
        }

    }

}

 

太空大战背景移动的几种方式

标签:object   time   local   pac   unity   eof   use   back   mes   

原文地址:https://www.cnblogs.com/huang--wei/p/9609459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!