首页 > 其他分享 >unity简易跑酷避障小游戏(扩展部分)

unity简易跑酷避障小游戏(扩展部分)

时间:2022-10-24 12:33:13浏览次数:60  
标签:障碍物 避障 跑酷 创建 transform player unity using public


unity简易跑酷避障小游戏(扩展部分)

更换player的Mesh Filter

选中player,在右侧的属性栏找到Mesh Filter,在mesh那一行,点击右侧的圆,在弹出的窗口里选择sphere,选择之后,player就从正方体变成了球体。

unity简易跑酷避障小游戏(扩展部分)_c#

创建障碍物预制体

右键点击创建障碍物,3D Object==>Cube,创建完成之后命名为barrier(命名只是便于确认物体,此处只是作为演示)

unity简易跑酷避障小游戏(扩展部分)_ide_02


然后,创建文件夹,文件栏右键点击创建 Create==>Folder,用于管理预制体。

unity简易跑酷避障小游戏(扩展部分)_ide_03


文件创建完成之后,拖动障碍物barrier到刚刚创建的文件夹里,成功之后会发现物体的图标有黑色转变为蓝色,

unity简易跑酷避障小游戏(扩展部分)_unity_04

随机障碍物设置

设置障碍物:创建一个空物体 右键点击==>Create Empty,然后命名为barrierControl,以便管理,

unity简易跑酷避障小游戏(扩展部分)_c#_05


代码部分:代码编辑完成之后,挂载到障碍物的空物体上,然后联系各物体,即将物体拖到挂载好代码的空物体属性栏的none上。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class barrierControl : MonoBehaviour
{
public GameObject player;
public GameObject BarrierPre;
public GameObject CurrentBarrier;
public int BarrierInterval=10;

// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{
AutCreatBarrier();
}
public void AutCreatBarrier(){
if(player.transform.position.x>CurrentBarrier.transform.position.x){
//生成新的障碍物
float targetX=CurrentBarrier.transform.position.x+BarrierInterval;
float targetY=RandomBarrierPositionY();
Vector3 targetPos=new Vector3(targetX,targetY,0);
GameObject g=Instantiate(BarrierPre,targetPos,Quaternion.identity);
g.transform.localScale=new Vector3(g.transform.localScale.x,RandomBarrierSizeY((int)g.transform.position.y),g.transform.localScale.z);
CurrentBarrier=g;
}
}
public float RandomBarrierSizeY(int y){
int yAbs=Mathf.Abs(y);
if(yAbs==0){
return 6;
}else
{
return (3-yAbs)*2-1;
}
}
public float RandomBarrierPositionY(){
int r=Random.Range(-3,3);
return r;
}
}

障碍物清除

为了不让运行时内存冗余,需要将“用过的”障碍物进行清除销毁,清理机制是在player左侧设置一面“墙”,“墙”随着player运动,“用过的”障碍物碰到墙之后会销毁,

实操开始,创建一个竖着的长方体,(创建物体步骤详解前面有讲到),创建完成之后命名为trigger,并将其放进wall空物体里,

unity简易跑酷避障小游戏(扩展部分)_右键_06


选中trigger,在右侧的属性栏里,删除Cube (Mesh Filter)和Mesh Renderer 属性,点击属性条的右侧,选择Remove Compoent就删除了。

unity简易跑酷避障小游戏(扩展部分)_文件创建_07


删除完成之后就会发现,它“消失”透明了。

unity简易跑酷避障小游戏(扩展部分)_c#_08


然后就是代码部分,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AutoDestoryBarrier : MonoBehaviour
{
private void OnTriggerEnter(Collider other){
Destroy(other.gameObject);
}
}

至此,整个扩展就完成了,这个游戏也更加丰富起来了。


标签:障碍物,避障,跑酷,创建,transform,player,unity,using,public
From: https://blog.51cto.com/u_15694180/5789405

相关文章