using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///<summary>
///挂载脚本的物体必须包含刚体组件,否则就会在开枪时报错
///这种写法符合组件时编程的规则,rocket既是预制体本身,又是预制体上面的刚体组件
///组件模型允许我们用物体上的任意一个组件指代这个物体
///</summmary>
public class RocketLauncher : MonoBehaviour
{
public Rigidbody rocket;
public float speed = 10f;
void FireRocket()
{
//rocketClone指代创建出来的火箭弹,它本身又是火箭弹上的刚体组件
Rigidbody rocketClone = (Rigidbody)Instantiate(rocket, transform.position, transform.rotation);
//接下来直接操作rocketClone实例
//先修改刚体
rocketClone.velocity = transform.forward * speed;
//举例:通过一个组件可以查找其他任何组件,比如脚本组件MyRocketScript
//rocketClone.GetComponent<MyRocketScript>().DoSomething();
}
void Update()
{
if(Input.GetButtonDown("Fire1"))
{
FireRocket();
}
}
}
1.先创建一个物体代表火箭筒,在火箭筒上挂载上述RecketLauncher.cs脚本。
2.创建一个火箭弹预制体,火箭弹必须包含刚体组件。
3.将火箭弹预制体拖曳到火箭筒脚本的rocket变量上。
4.运行游戏,单击鼠标左键即可发射火箭弹。