unity设备动作代码解析(2):上料代码解析

勇哥注:

上料是指自动供料机构,例如震动盘,感应到就供一个料。

其实就是通过触发器复制一个对象实例。



image.png

(图1)


代码:

public class ProductFeeder : MonoBehaviour
{
    public GameObject product;

    bool available=true;

    private void Start()
    {
        Produce();
    }

    private void OnTriggerExit(Collider other)
    {
        Produce();
    }


    void Produce()
    {
        if (available)
        {
            var temp = Instantiate(product, transform);
        }
    }
}


Instantiate 是Unity中的一个内置方法,用于创建(或称为“实例化”)一个新的游戏对象。

这个方法可以复制任何已经存在于场景中的游戏对象,或者复制任何通过脚本动态创建的游戏对象。


product 参数:

product 是 Instantiate 方法的第一个参数,它代表了一个游戏对象(GameObject)或者一个预制件(Prefab)的引用。

如果 product 是一个预制件,那么 Instantiate 方法会创建一个该预制件的新实例。

如果 product 是一个已经存在于场景中的游戏对象,那么 Instantiate 方法会复制这个对象。


transform 参数:

transform 是 Instantiate 方法的第二个参数,它代表了一个Transform类型的值,用于指定新实例化的游戏对象应该被放置在世界空间中的哪个位置。


这里为啥transform没有定义却可以直接使用呢?

在Unity的C#脚本中,transform 通常是一个预定义的属性,它属于每个GameObject类的一个实例。

这意味着,当你在Unity的脚本中编写代码时,如果你正在编写的是一个继承自MonoBehaviour的类的成员方法,

并且这个方法属于一个附加到某个游戏对象上的脚本,那么你可以直接访问transform属性,而无需事先定义它。



代码是很简单,但是实际操作的时候,发现一个问题。

就是复制出来的对象为啥不是原对象的大小?比例也不对呢?

如图1所示,复制出来的罐子比例是不对的。

image.png 

正常尺寸应该是下面这样的:

image.png



其实,主要是那个Cube的Transform的缩放大小要一致,下图中都是0.1,这样罐子就等比例了。

但是其大小跟随Cube变化。

image.png

image.png


当触发器框碰到了start()函数复制的那个罐子后,就开闸放水般疯狂复制了。

这个复制的速度当然就是等于你帧速度。

image.png



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-10-17 14:54:21 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864