unity精通之路01(SpaceShooter02)

本文详细介绍使用Unity引擎创建小行星游戏的过程,包括预设体克隆、小行星旋转、射击控制、爆炸效果及随机出现等功能实现。通过具体步骤与代码示例,帮助读者掌握Unity游戏开发技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unity精通之路01(SpaceShooter)02

创建小行星(主要学习预设体的克隆方法)

1)在Hierarchy视图中新建一个空的游戏对象Asteroid,重置其Transform组件。设置其Position为(0,0,10)。添加Rigidbody组件,取消勾选Use Gravity选项框。添加Capsule Collider组件,勾选Is Trigger选项。
2)从Project视图中拖动prop_asteroid_01到Asteroid对象上,使之成为Asteroid的子对象。
3)为了使碰撞体更接近2模型,调整其参数,Radius为0.5,Height为1.6,Direction的值为z轴。

添加小行星旋转功能

1)该功能主要用到随机函数Random,在脚本添加一个小行星旋转系数的变量tumble,再重载Start函数,为刚体组件角速度附上随机值

public float tumble=10.0f;
void Start(){
GetComponent< Rigidbody>().angularVelocity=Random.insideUnitSphere*tumble;

其中Random.insideUnitSphere表示单位长度半径球体内的一个随机点(向量),还要在Rigidbody组件上设置angular drag为0.

添加控制射击小行星的功能

添加脚本,代码如下:

void OnTriggerEnter(Collider other)
{
if(other.tag==“Boundary”)
return;
Destory(gameObject);
Destroy(other.gameObject);
}

添加小行星爆炸效果

打开脚本DestroyByContact进行编辑

public GameObject explosion;
public GameObject playerExplosion;
void OnTriggerEnter(Collider other)
{

Instantiate(explosion,transform.position,tansform.rotation);
if(other.tag==“Player”)
Instantiate(playerExplotion,other.transform.position,other.tansform.rotation);

}

接着把预设好的爆炸效果放到相应的变量上

添加小行星随机出现功能

1)把Asteroid对象从Hierarchy视图拖动到Project视图的Prefabs目录下,生成预制体Asteroid,然后将其从Hierarchy视图删除
2)在Project视图创建一个空的游戏对象GameController,重置其Transform组件,指定Tag为GameController。
3)在Project视图新建个脚本并附到GameController上
4)代码如下

public GameObjcet hazard;
public Vectoir3 spawnValues;
private Vector3 spawnPosition=Vector3.zero;
private Quaternion spawnRotation;
public int hazardCount;
void SpawnWaves()
{
for(int i=0;i<hazardCount;++i){
spawnPosition.x=Random.Range(-spawnValues.x,spawnValues.x);
spawnPosition.z=spawnValues.z;
spawnRotation=Quaternion.identity;
Instantiate(hazard,spawnPostion,spawnRotation);
}
}
void Start()
{
SpawnWaves();
}

5)添加一个变量spawnWait,用于表示每次生成小行星对象后延迟的时间,单位为秒。

public float spawnWait=1.0f;

更新原来的脚本

IEnumerator SpawnWaves()
{
yield return new WaitForSecond(startWait);
whwile (true) {
for(int i=0;i<hazardCount;++i)
{

}
yield return new W aitForSeconds
(spawnWait);
}
}

添加爆炸效果摧毁功能

创建个脚本绑定到爆炸粒子效果上

public float lifetime=2.0f;
void Start()
{
Destroy(gameObject,lifetime);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值