Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效

游戏界面——主玩家——武器奖励对象和获取特效

先为一系列武器设置成预制体,然后为其添加脚本并关联子弹与特效

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第1张图片

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第2张图片

武器奖励

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第3张图片

当玩家碰到该物体时触发奖励

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第4张图片

关联武器

然后再在玩家脚本中实现一个切换武器的函数

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第5张图片

让玩家随机武器

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第6张图片

再在玩家类中关联一个武器位置

实现武器切换

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第7张图片

注意还要将炮管设置为玩家的子对象,不然这个炮管不会跟着玩家移动(只需要将Instantiate改一下就行了)

移除特效(播放完之后)

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第8张图片

获取奖励时的特效 

Unity坦克大战开发全流程——游戏界面——主玩家——武器奖励对象和获取特效_第9张图片

直到当前WeaponReward和AutoDestroy的代码如下

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

public class RewardObj : MonoBehaviour
{

    //关联的武器预制件
    public List weaponObj;
    //关联一个奖励特效
    public GameObject getEff;

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            //随机武器下标
            int index = Random.Range(0, weaponObj.Count);
            //调用玩家随机武器的方法
            PlayerObj playerObj = other.GetComponent();
            playerObj.ChangeWeapon(weaponObj[index]);

            //创建一个奖励特效
            GameObject eff = Instantiate(getEff, transform.position, transform.rotation);
            //控制特效的音效
            AudioSource audioSource = eff.GetComponent();
            audioSource.volume = GameDataMgr.Instance.musicData.soundValue;
            audioSource.mute = !GameDataMgr.Instance.musicData.isOpenSound;
            audioSource.Play();

            Destroy(gameObject);
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioDestory : MonoBehaviour
{
    public int time = 3;

    // Update is called once per frame
    void Update()
    {
        Destroy(gameObject,time);
    }
}

 

 

你可能感兴趣的:(unity,游戏,游戏引擎)