Iphone CGPoint变量在幕后是如何工作的?
我不确定我创建的CGPoint变量如何知道如何处理特定的Iphone CGPoint变量在幕后是如何工作的?,iphone,objective-c,ios,Iphone,Objective C,Ios,我不确定我创建的CGPoint变量如何知道如何处理特定的if语句 例如,我有CGPoint myVelocity
if
语句
例如,我有CGPoint myVelocity然后我有一个任意数float maximumvocity=100代码>
然后我执行以下代码
if (myVelocity.x > maximumVelocity) {
myVelocity.x = maximumVelocity;
}
else if (myVelocity.x < -maximumVelocity)
{
myVelocity.x = -maximumVelocity;
}
我最近在问题的后半部分询问了代码smilar,但现在我对前者感到好奇 GCPoint表示二维空间,理想情况下,在CGPoint中存储速度意味着您需要一个由二维x和y表示的速度向量
在你们的例子中,我看到你们只使用一维,我并没有完全理解你们想要实现的,但在你们的例子中,你们可以使用一个浮点来存储速度值,如果它没有方向的话
如果你需要二维速度,你必须通过检查向量的长度来检查最大速度。在您的示例中,仅检查x维度,但如果速度为x=50,y=20000,则在y轴上移动得非常快
ccpLength(
允许您检查CGPoint的长度,以便与浮点进行比较,查看实际速度是否快于最大速度,在这种情况下,您需要规范化向量以实际匹配最大速度,您可以使用
ccpMult(v, maximumVelocity/ccpLength(v))
GCPoint表示二维空间,理想情况下,在CGPoint中存储速度意味着您需要一个由二维x和y表示的速度向量
在你们的例子中,我看到你们只使用一维,我并没有完全理解你们想要实现的,但在你们的例子中,你们可以使用一个浮点来存储速度值,如果它没有方向的话
如果你需要二维速度,你必须通过检查向量的长度来检查最大速度。在你的例子中,你只检查x维,但是如果速度是x=50,y=20000,这在y轴上移动得非常快
ccpLength(
允许您检查CGPoint的长度,以便与浮点进行比较,查看实际速度是否快于最大速度,在这种情况下,您需要规范化向量以实际匹配最大速度,您可以使用
ccpMult(v, maximumVelocity/ccpLength(v))
CGPoint只是一个包含“x”和“y”组件的结构。你可以认为它是传递一对浮点数的一种更简单的方法
因此,上面的代码相当于:
float x;
// other stuff
if (x > maximumVelocity) {
x = maximumVelocity;
}
else if (x < -maximumVelocity)
{
x = -maximumVelocity;
}
要访问“x”变量,设置或读取它,请使用“.x”,就像您在代码示例中所做的那样
(p.S.CGPoint实际上是一对Cgploat,原因与本文无关)CGPoint只是一个包含“x”和“y”组件的结构。你可以将其视为传递一对float的更简单方法
因此,上面的代码相当于:
float x;
// other stuff
if (x > maximumVelocity) {
x = maximumVelocity;
}
else if (x < -maximumVelocity)
{
x = -maximumVelocity;
}
要访问“x”变量,设置或读取它,请使用“.x”,就像您在代码示例中所做的那样
(p.S.CGPoints实际上是一对CGfloat,其原因与本帖无关)谢谢你的回答。你说得对,目前我有一个只在x轴上移动的精灵,我会稍微介绍一下y轴。但是,我的问题是检查是如何进行的。myVelocity如何知道它何时在maximumVelocity浮点变量的限制范围内。是的,myVelocity是速度向量,但我不确定如何进行检查我不知道它何时达到100,这是否是因为我之前实现的代码,当我设置myVelocity以获取灵敏度并将其乘以加速度.x,然后将myVelocity.x向量乘以减速变量时发生的?@ElmedinZelenkic:myVelocity
什么都不知道。它只是几个n的容器编号。您的代码知道何时myVelocity.x
小于maximumVelocity
,因为您编写了这样一个比较。myVelocity
成员的值与您(或任何其他代码)的值无关分配到那里。谢谢回答。你说得对,目前我有一个只在x轴上移动的精灵,我会稍微介绍一下y轴。但是,我的问题是如何进行检查。myVelocity如何知道何时在maximumVelocity浮动变量的限值内。是的,myVelocity是速度向量,但我不是我不确定它如何知道何时达到100,这是否是因为我之前实现的代码,当我设置myVelocity以获取灵敏度并将其乘以加速度.x,然后将myVelocity.x向量乘以减速变量时发生的?@ElmedinZelenkic:myVelocity
什么都不知道。它只是一个容器两个数字。您的代码知道何时myVelocity.x
小于maximumVelocity
,因为您编写了这样一个比较。myVelocity
成员的值是您(或任何其他代码)在其中指定的值。