Unity 3D酷跑类游戏场景循环

Unity 3D酷跑游戏场景循环

////////////////2015/07/05/////////////

///////////////by xbw////////////////////

///////////////环境 Unity4.6.1//////

经过一上午的学习与实验,终于实现了3D酷跑游戏的场景循环。。大喜。遂分享交流,共同学习。



在场景中建两个Plane作为地面,分别命名为Plane1,Plane2;

Unity 3D酷跑类游戏场景循环_第1张图片

Unity 3D酷跑类游戏场景循环_第2张图片

Position 分别设为0,0,50;0,0,150;

Scale分别设为1,1,10;1,1,10;

接着建立一个Cube,位置设为0,0.5,20;

Cube即为游戏人物,

Cube的方向控制代码;;;Csharp代码如下;


using UnityEngine;
using System.Collections;
public class playControl : MonoBehaviour
{
   public float movespeed =10f;
   void Update()
{
 
   if (Input.GetKey(KeyCode.UpArrow))
             transform.Translate(Vector3.forward * movespeed*Time.deltaTime);

        
   if (Input.GetKey(KeyCode.DownArrow))
           transform.Translate(Vector3.back * movespeed * Time.deltaTime);

     
   if (Input.GetKey(KeyCode.LeftArrow))
           transform.Translate(Vector3.left * movespeed * Time.deltaTime);

     
   if (Input.GetKey(KeyCode.RightArrow))
          transform.Translate(Vector3.right * movespeed * Time.deltaTime);
   
 }

}
创建一个C#script。。。
用将此代码写入;把它托给Cube;
为主摄像机添加Unity自带脚本,,,
添加过程:
<img src="http://img.blog.csdn.net/20150705130954455?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<img src="http://img.blog.csdn.net/20150705131004570?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
导入即可;;;
我们会看到多出来了代码文件夹;
<img src="http://img.blog.csdn.net/20150705131131773?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
将SmoothFollow托给主摄像机,Main Camera;;;
此时运行就可以看到效果了,可以用方向键控制Cube移动,我们要解决的问题是场景循环,
怎样实现两个Plane平面生成无限循环的场景,两个Plane一前一后,走过前边的Plane把他移到后一个Plane的后边;
并将Plane1删除;走过Plane2时,Plane2消失,移动到Plane3的后边,一次交替循环,实现场景的无线路;;;;
为了实现更好的效果,先给Cube添加重力效果,还有一些相关属性,如下;
 
 

 
 

 Unity 3D酷跑类游戏场景循环_第3张图片

Unity 3D酷跑类游戏场景循环_第4张图片

其中我们为Cube添加了Tag————Player。。。

增加了Box Collider属性,,,

接下来新增两个Tag 分别命名为Plane1,Plane2;

Unity 3D酷跑类游戏场景循环_第5张图片

Unity 3D酷跑类游戏场景循环_第6张图片

在这将其命名;;;;;;

分别把tag-Plane1,tag-Plane2为Plane1,Plane2的子类;;;;

Unity 3D酷跑类游戏场景循环_第7张图片

设置一下

tag-Plane1,tag-Plane2;


Unity 3D酷跑类游戏场景循环_第8张图片


Unity 3D酷跑类游戏场景循环_第9张图片

发现代码了吧;;;;

这个就是用来控制两个Plane交替循环的;;;;;

代码如下;;;;

using UnityEngine;

using System.Collections;


public class bgtrigger : MonoBehaviour

{
    
	GameObject bg;

    
	void Start()
   {
bg = new GameObject();
}

    
	void OnTriggerEnter(Collider e)
   {
       
if (e.CompareTag("Player"))

 
{
 
	if (gameObject.transform.parent.CompareTag("Plane2"))//父类
          
  		{
               
			 bg = GameObject.FindGameObjectWithTag("Plane2");
               
 			 bg.transform.position = new Vector3(0, 0, bg.transform.position.z + 200);
           
		 }
       
     	else
            
		{
            
   			 bg = GameObject.FindGameObjectWithTag("Plane1");
         
       			 bg.transform.position = new Vector3(0, 0, bg.transform.position.z + 200);
           
		 }
    
}
  
  
}






}

Box Collider 是触发器,,,,,,

Unity 3D酷跑类游戏场景循环_第10张图片

当Cube走到这个位置时,即碰触到触发器,这时候相应的代码就会起作用;;;;;

Unity 3D酷跑类游戏场景循环_第11张图片

看我设置的两个触发器的位置,要保证充足的重叠部分,最开始是总是有错误,

发现触发器正好在两个路的末端,这样的话,Cube在走到两个路之间的时候就会发生物理现象,导致Cube失去方向,掉落;;;

足够的重组部分可以使画面流畅,,,不至于看到有部分无场景;;;;;;

我放了两颗树在触发器旁边是为了测试路生成时的具体位置,便于调整路生成的位置;;;;;


至于给路贴图,直接建材质,托给Plane就好了,不再多说;;;;

到这里,差不多了,赶快跟着实现一下吧,叙述的不太清楚,有问题留言我会及时给予回复,,,共同学习交流;;;;,

初学者,不喜勿喷,,,unity大牛请绕路;;;;




你可能感兴趣的:(Unity 3D酷跑类游戏场景循环)