四元数乘以向量得意义、委托invoke、layer按位运算、int float bool和零值比较

Quaternion.Euler()的意义是
Returns a rotation that rotates z degrees around the z axis, x degrees around the x axis, and y degrees around the y axis.
也就是说绕x轴旋转x度,y轴旋转y度,z轴旋转z度

Quaternion作用于Vector3的右乘操作(*)返回一个将向量做旋转操作后的向量,也就是说是将一个向量(欧拉角)旋转到指定的角度

例如:Quaternion.Euler(0, 90, 0) * Vector3(0.0, 0.0, -10.0)表示将向量Vector3(0.0, 0.0, -10.0)做绕y轴90度旋转后的结果,等于Vector3(-10.0, 0.0, 0.0).

可以用来做一个物体围绕着一个点来旋转

 

问题

c# – Action(arg)和Action.Invoke(arg)之间的区别?
解答

All delegate types have a compiler-generated Invoke method.

所有的委托类型,编译器都会自动生成一个 invoke 方法.

C# allows you to call the delegate itself as a shortcut to calling this method.

用委托类型直接加参数是Invoke(参数)的一个捷径.
其实等价调用 Invoke();

类似:

Action<string> x = Console.WriteLine;
x("2");
x.Invoke("2");

开启layer 2

LayerMask mask = 1<<2;

其中 <<左边的 1表示有[开启],0表示没有该layer[忽略] 。右边的2表示左移2位即是 layer2层的位置。

开启layer 0和layer 2

LayerMask mask = 1 << 0 |  1 << 2;

开启Layer0 并关闭 Layer2

LayerMask mask = 1 << 0 | 0 << 2

开启Layer Default

LaserMask mask=1 << LayserMask.NameToLayer(“Default”);

 

1、int型变量 n 与“零值”比较的 if 语句就是:
if ( n == 0 )

if ( n != 0 )

如下写法均属不良风格.。

if ( n ) // 会让人误解 n 是布尔变量

if ( !n )

2、请写出 BOOL flag 与“零值”比较的 if 语句。
根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE 的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE 定义为1,而Visual Basic 则将TRUE 定义为-1。所以我们不可以将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。
标准答案:
if ( flag )

if ( !flag )

如下写法均属不良风格。

if (flag == TRUE)

if (flag == 1 )

if (flag == FALSE)

if (flag == 0)

3、请写出 float x 与“零值”比较的 if 语句。

千万要留意,无论是float 还是double 类型的变量,都有精度限制,都不可以用“==”或“!=”与任何数字比较,应该设法转化成“>=”或“<=”形式。(为什么?文章之后有详细的讨论,可参考)

假设浮点变量的名字为x,应当将

if (x == 0.0) // 隐含错误的比较

转化为

if ((x>=-EPSINON) && (x<=EPSINON))

其中EPSINON 是允许的误差(即精度)。

标准答案示例:

const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

如下是错误的写法。

if (x == 0.0)

if (x != 0.0)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TO_ZRG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值