物体实例化案例

绘制子弹效果

1.鼠标单击物体实例化的触发

public class Turn : MonoBehaviour
{
    void Update()
    {
        if(Input.GetKeyDown (KeyCode.Mouse0))//点击鼠标会触发的效果
        {
            GameObject Orange = Instantiate () as GameObject;//物体实例化,需要在括号中标注实例化的物体
        }
    }
}

2.在创建物体实例化时需要先创造两个变量,在触发中设置了Orange对象,所以要设置目标变量:对象,对象即生成的物体

public class Turn : MonoBehaviour
{
    public GameObject Mubiao;
    public GameObject Duixiang;

//申请公有变量可以在面板查看一些东西,设置私有变量ptivate可以节省一些资源,会使场景游戏更加流畅
   +第一步中的代码

3.将代码内容绑定在主摄像机上,会在属性面板出现变量Mubiao和Duixiang

4.创建一个球(Sphere)为对象,将其位置改为0,0,0;在Assets中单击右键选择Create>Material更换材质;将出现的材质球更改名字为black,并改变颜色;将材质球拖到Hierarchy>Sphere上,使小球染色;再将小球拖到材料面板上变成预制物体(Assets),再将Hierarchy上的Sphere删除

5.点开主相机,将预制物体拖拽到属性面板的Duixiang框中

6.设置目标点>创建空物体:在菜单栏的GameObject中创建(选第一个)并将其坐标设置为(0,0,0)//此时,球会在目标点生成

void Update()
    {
        if(Input.GetKeyDown (KeyCode.Mouse0))//点击鼠标会触发的效果
        {
            GameObject Orange = Instantiate (Duixiang ) as GameObject;//物体实例化,需要在括号中标注实例化的物体
            Orange.transform.position = Mubiao.transform.position;//当小球到达这个目标位置时,出现
            Orange.transform.rotation = Mubiao.transform.rotation;//子弹不应该是圆形,而是胶囊体型,设置旋转
        }
    }

前面的代码不发生改变

7.需要将Hierarchy中的GameObject改名字为代码中的Mubiao,并将它拖拽到属性面板的Mubiao中,这样就可以才能不报错,点击播放,此时单击左键会生成很多个黑色小球(子弹)

8.选中预制物体Sphere,在属性面板中添加physics>Rigidbody,此时点击播放,单击鼠标多次单击会出现多个小球,在Y轴上叠加。

9.制作子弹效果,则需要小球能进行位移,创建一个新的脚本,命名为“Zidan”,在Update中给子弹一个正方向的位移(或者在Start中给一个力)代码:

public class zidan : MonoBehaviour
{
    void Start()
    {
        
    } 

     void Update()
    {
        transform.Translate(0.4f, 0, 0);//此时给了子弹一个正方向的位移
    }
}

10.将“Zidan”脚本绑在Sphere的预制物体上,在属性面板中选择Add Component>Scripts>Zidan即可绑定脚本。此时单击,可以生成子弹向一个方向移动的效果。

11.调整子弹的大小和位移的速度。

备注:最终Turn的代码内容

public class Turn : MonoBehaviour
{
    public GameObject Mubiao;
    public GameObject Duixiang;//申请公有变量可以在面板查看一些东西,设置私有变量ptivate可以节省一些资源,会使场景游戏更加流畅
    void Update()
    {
        if(Input.GetKeyDown (KeyCode.Mouse0))//点击鼠标会触发的效果
        {
            GameObject Orange = Instantiate (Duixiang ) as GameObject;//物体实例化,需要在括号中标注实例化的物体
            Orange.transform.position = Mubiao.transform.position;//当小球到达这个目标位置时,出现
            Orange.transform.rotation = Mubiao.transform.rotation;//子弹不应该是圆形,而是胶囊体型,设置旋转
        }
    }
}
 

### 关于 PyTorch 物体分类模型训练的概述 PyTorch 提供了一套强大的工具来支持物体分类模型的开发与训练。以下是基于提供的引用内容以及专业知识整理的相关信息。 #### 1. 模型生成与预训练模型加载 在 PyTorch 中,`torchvision.models` 是一个常用的模块,用于快速获取各种预定义的神经网络架构[^1]。这些模型通常已经过 ImageNet 数据集上的预训练,可以直接应用于其他任务或作为迁移学习的基础。例如: ```python import torchvision.models as models # 加载 ResNet-18 预训练模型 model = models.resnet18(pretrained=True) # 替换最后一层全连接层以适应新的分类任务 num_ftrs = model.fc.in_features model.fc = torch.nn.Linear(num_ftrs, num_classes) # 设置为目标类别数 ``` 上述代码展示了如何通过替换预训练模型的最后一层实现自定义分类器的设计。 --- #### 2. 数据预处理 为了使输入数据适配卷积神经网络的要求,需对其进行标准化和转换操作。常用的方法包括将图片从 PIL 或 NumPy 数组格式转化为 PyTorch 的 Tensor 格式,并调整其尺寸至固定大小[^2]。具体实现如下所示: ```python from torchvision import transforms data_transforms = transforms.Compose([ transforms.Resize((224, 224)), # 调整图像分辨率到 (224x224) transforms.ToTensor(), # 将图像转为 Tensor 类型 transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) # 归一化处理 ]) ``` 此部分确保了输入数据能够被有效传递给后续的深度学习框架进行计算。 --- #### 3. CIFAR-10 数据集的应用实例 CIFAR-10 是一种广泛使用的基准数据集,适用于测试小型 CNN 架构的效果。下面是一个简单的例子展示如何利用该数据集完成分类任务并评估性能[^3]: ```python import torch.optim as optim from torchvision.datasets import CIFAR10 from torch.utils.data import DataLoader # 定义超参数 batch_size = 64 learning_rate = 0.001 epochs = 10 # 下载 CIFAR-10 数据集 train_dataset = CIFAR10(root='./data', train=True, download=True, transform=data_transforms) test_dataset = CIFAR10(root='./data', train=False, download=True, transform=data_transforms) train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) # 设定损失函数与优化算法 criterion = torch.nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=learning_rate) # 开始训练过程... for epoch in range(epochs): running_loss = 0.0 for inputs, labels in train_loader: optimizer.zero_grad() # 清零梯度 outputs = model(inputs) # 前向传播 loss = criterion(outputs, labels) # 计算误差 loss.backward() # 反向传播 optimizer.step() # 更新权重 running_loss += loss.item() print(f'Epoch [{epoch+1}/{epochs}], Loss: {running_loss/len(train_loader):.4f}') print('Finished Training') ``` 以上脚本说明了一个完整的端到端流程,涵盖了从准备数据直到最终输出预测结果的过程。 --- #### 4. 实时目标检测中的应用扩展 除了静态图像分类外,在某些场景下还需要考虑动态视频流内的对象识别需求。此时可选用更高效的轻量化模型如 MobileNet V3 结合 Faster R-CNN 来达成接近实时的速度表现(约每秒五帧)。尽管如此,实际运行效率仍取决于硬件配置情况;如果追求更高标准,则可能需要借助专用加速卡或其他技术手段进一步提升效能[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值