(四)坦克大战--(2)发射炮弹

1,前言

制作坦克发射炮弹
参考自–b站视频

2,思路

发射炮弹的思路其实就是:
实例化一个炮弹出来,然后给这个炮弹添加一个向前的力,使其发射

3,步骤

3.1,发射位置

首先需要给PlayerTank(玩家坦克)创建一个空的子物体(Empty Child)
命名为ShootPoint,这个ShootPoint就是实例化炮弹的位置,炮弹会在这个位置被实例化出来,然后通过脚本给它一个力。
在这里插入图片描述创建完之后就需要调整一下这个发射点的位置,使它在坦克的炮管发射口的正前方即可(又或者调整到你想要的位置和角度)

在这里插入图片描述

3.2,炮弹模型

然后就是炮弹的模型,我们可以去Unity的Asset Store中的寻找我们需要的炮弹模型,下载导入即可。这里我用的是Unity官方教程双人坦克小游戏中的炮弹模型。
导入之后给这个炮弹模型添加上Box Collider和Rigibody还有Light组件
Box Collider是为了方便炮弹命中坦克时进行碰撞判定的
Rigibody是为了让炮弹有物理属性
Light是为了让炮弹飞行时带有光效,纯粹是酷!
然后将炮弹存为Prefab方便后面使用
在这里插入图片描述

3.3,编写脚本

接下来就是编写脚本(MainTankWeapon),使得按下空格键的时候就会实例化一个炮弹并进行发射。

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

public class MainTankWeapon : MonoBehaviour
{
	//炮弹Prefab
    public GameObject shell;
    //发射时给炮弹施加的力
    public float shootPower;
	//炮弹发射的位置
    public Transform shootPoint;
	//炮弹发射间隔
    public int fireTime=0;    


    // Update is called once per frame
    void Update()
    {
        if (fireTime<=999)
        {
            fireTime++;
        }
		//防止炮弹进行无间断发射
		//按下空格键就会发射炮弹
        if (fireTime>=30 && Input.GetKeyDown(KeyCode.Space))
        {
            Shoot();
            fireTime = 0;
        }

        
    }
	//发射炮弹的方法
    void Shoot()
    {
        //这是实例化出来的炮弹
        GameObject newShell=Instantiate(shell, shootPoint.position, shootPoint.rotation) as GameObject;
		//获取炮弹的刚体组件
        Rigidbody r =newShell.GetComponent<Rigidbody>();
		//给炮弹施加一个力,使其飞行
        r.velocity = shootPoint.forward * shootPower;
        
        
    }
}

3.4,挂载脚本

接下来就是将脚本挂在在PlayerTank上
并通过属性菜单进行赋值
将ShootPoint和炮弹Prefab(我这里的是Shell1)拖到对应的框即可
并在ShootPower框上填上相应的值,表示炮弹发射时施加的力。
力越大,炮弹飞的越远越快
在这里插入图片描述
未完待续…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值