unity2d如何判断高度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity2d如何判断高度相关的知识,希望对你有一定的参考价值。

您好,在Unity2D中,判断高度可以通过使用物理引擎,来获取物体的高度。例如,可以使用Rigidbody2D组件,设置物体的重力,然后调用Rigidbody2D.position.y来获取物体的高度。另外,还可以使用Transform组件,调用Transform.position.y来获取物体的高度。此外,还可以使用Raycast来检测物体的高度,Raycast可以检测到物体的距离,从而判断物体的高度。总之,在Unity2D中,可以通过使用物理引擎,Transform组件和Raycast来判断物体的高度。 参考技术A 在Unity2d中,可以使用Collider2d组件(或子类)检测和访问物体的Camera.main上的高度。如果您想要使用其他方式,可以使用Transform.position获取物体的矩阵坐标,该矩阵坐标有一个y分量表示对象的高度。 参考技术B unity2d这样判断高度:首先进入官网,然后点击设置,之后选择高度,最后进行判断即可,因此unity2d这样判断高度 参考技术C 我们现在正在做基于Unity自带导航系统的寻路逻辑,但是不知道如何获得Unity自带导航模型在某一点的高度,就没法正确设置角色y值。目前想到的办法是自己生成一套Heightmap和一套导航模型,先对Heightmap进行高度查询,Heightmap查询失败再进行导航模型的射线检测。

如何使用 Javascript (jQuery) 判断图像是不是具有特定的宽度/高度? [复制]

【中文标题】如何使用 Javascript (jQuery) 判断图像是不是具有特定的宽度/高度? [复制]【英文标题】:How to tell if an image has been given a specific width/height with Javascript (jQuery)? [duplicate]如何使用 Javascript (jQuery) 判断图像是否具有特定的宽度/高度? [复制] 【发布时间】:2012-10-05 21:58:28 【问题描述】:

可能重复:How to get image size (height & width) using javascript?

通常我们可以使用$('img').width()$('img').css('width') 来获取图像宽度,当宽度指定如下时

<img src="image.gif"   />
<img src="image.gif" style="width: 32px; height: 32px" />

但是如果我们不指定宽度:

<img src="image.gif" />

IE会返回28px,FF会返回0px。

问题是我们可能故意将图像宽度设置为 28px 或 0px,这将导致与实际未设置宽度的情况相同的数字。

我的问题是:我们如何判断图像是否具有特定的宽度/高度?

编辑

抱歉,忘记了一件重要的事情:IE 上为 28px,FF 上为 0px仅在找不到图像时发生 (404)

【问题讨论】:

更成问题的是通过类的宽度我猜:&lt;img src="image.gif" class="wide"&gt;.wide width: 32px; IE 是否返回 28px .width().css('width') 这是一个重复的问题。见***.com/questions/623172/…或***.com/questions/5633264/… @qodeninja 不...完全不同。我正在寻找一种方法来检查是否给定尺寸,而不是尺寸值。 @user1643156 - 是一回事。如果没有值,则没有设置维度。 【参考方案1】:

这是一个 hack,但您可以通过这种方式获取原始 HTML:

var htmltag=$("img")[0].outerHTML;

然后将其解析为width="..."style="..."

if (
    htmltag.match(/style=['"][^'"]*width:/) ||
    htmltag.match(/width=['"]/)
   ) alert("Has width");

border-width 等有一些极端情况,但你明白了。

【讨论】:

感谢 Wolfgang,但您的方法无法检测到在外部 css 文件中设置的样式。 (是的,我没有提到外部 css)【参考方案2】:

图像在浏览器中异步加载,因此取决于您检查尺寸的位置。我认为您所看到的是,当您查询宽度或高度时,图像尚未加载。

如果你运行它,你可能会看到最初的 alert() 报告为 0,但如果你点击按钮,它会显示实际大小:

<img id="Image" src="images/MessageBoardLogo.png" />
<input type="button" id="Button" value="Caption" />

<script type="text/javascript">
$().ready( function() 
    imageSize();

    $("#Button").click(imageSize);
);
function imageSize()

    alert($("#Image").width());
        
</script>

讽刺的是,FireFox 在第一个示例中立即报告宽度,IE 和 Chrome 显示 0px,但这只是表明它取决于浏览器的时间、图像的加载时间等。

确保图像已加载并准备好可靠读取大小的最佳方法是使用加载处理程序:

$("#Image").load( function()  
                      // do whatever you need with width and height
                      global.imgWidth = $(this).width(); 
                      global.imgHeight = $(this).height() 
                   );

【讨论】:

【参考方案3】:

检查.attr('width')/.attr('height')

【讨论】:

如果使用 CSS 显式设置宽度会怎样? 我相信只检查是否指定了宽度/高度属性 @ahren 然后你可以查看.css('width') 甚至查看.attr('style') 如果你不关心它是用高度/宽度属性还是css声明设置的,你可以使用.height().width() 如果您需要计算图像的实际宽度和高度,那么 .width() 和 .height() 是更好的选择,因为它首先查找实际图像大小然后检查如果实际图像宽度不可用,则用于属性。永远不应该使用 .attr('width')/.attr('height') 而不是 .width() 和 .height()。

以上是关于unity2d如何判断高度的主要内容,如果未能解决你的问题,请参考以下文章

Unity2D实现敌人自动追击主角并判断路障

Unity2D如何制作一个炮台追踪主角发射子弹

Unity2D横版游戏地形生成

unity2d 如何使角色静止

如何在unity2d中生成对象? [关闭]

Unity2d中如何删除Checkpoint信息