unity hub 自带教程学习笔记(ruby、lemonJohn)

https://learn.unity.com/?_gl=1*1c5ya13*_ga*MTAzODc3MzI4LjE1OTc5MTQ3NzI.*_ga_1S78EFL1W5*MTYyNjM0NTY2MC4xNy4xLjE2MjYzNTM5ODAuNQ..&_ga=2.119106061.528537968.1626154667-103877328.1597914772

1. void OnTriggerEnter2D(Collider2D other){}      //2d游戏与触发器开始重叠,other内包含与当前触发器碰撞的对象的信息

RubyController controller = other.GetComponent<RubyController>();  //获得触发器碰撞对象中的组件.

添加尖括号的原因是 GetComponent 方法为泛型。泛型方法具有两组不同的参数:普通参数和类型参数。尖括号之间列出的参数是类型参数。

2. 脚本中的public的变量将在unity脚本中显示出来,可进行重载;

3. public int health { get { return currentHealth; } } //让外部获取变量但不可修改的只读函数示例。

4.

Rigidbody2D rigidbody2d;
rigidbody2d = GetComponent<Rigidbody2D>();    //获得刚体变量
 

horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");   //获得坐标

刚体运动

Vector2 position = rigidbody2d.position;
position.x = position.x + speed * horizontal * Time.deltaTime;
position.y = position.y + speed * vertical * Time.deltaTime;

动作表现

animator.SetFloat("Move X", 0); animator.SetFloat("Move Y", direction);

在此部分中,如果机器人垂直移动,则会将 0 发送到 horizontal 参数,而 direction 定义机器人是向上还是向下移动。

5.

rigidbody2d.MovePosition(position);  //刚体移动

6.

currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);
//使结果不能超过前后两个数值。

7.

void FixedUpdate()    //非每帧更新,每隔一个固定时间更新一次

8.

void OnCollisionEnter2D(Collision2D other)  //刚体与某个对象碰撞时调用的函数

9.

Mathf.Approximately(move.x, 0.0f)   //类似==,因为计算机存储浮点数的方式意味着精度会有很小的损失。所以,不应测试完美的相等性,因为最终结果应该是 0.0f 的运算可能会得出类似 0.0000000001f 的结果。Approximately 会考虑这种不精确性,如果除去这种不精确性可以认为数值相等,将返回 true。

.Normalize()  //使长度等于1,用在vector2里作为方向储存

.magnitude   //计算向量长度

10.

GameObject projectileObject = Instantiate(projectilePrefab, rigidbody2d.position + Vector2.up * 0.5f, Quaternion.identity);
//Instantiate 是 Unity 的一个函数,Instantiate 的第一个参数是一个对象,在第二个参数的位置处创建一个副本,第三个参数是旋转。

四元数 (Quaternion) 是一种可以表达旋转的数学运算符,但这里只需要记住的是,Quaternion.identity 表示“无旋转”。

11.

if(transform.position.magmitude >1000.0f)  //position 可以看作是从世界中心到对象所在位置的向量,magnitude 是该向量的长度。因此,position 的 magnitude 就是到中心的距离。
 

可以获取角色和齿轮之间的距离(使用 Vector3.Distance (a,b) 函数计算 position a 与 position b 之间的距离)。

12.

smokeEffect.Stop();  //

  • 注释掉 smokeEffect.Stop() 并在下一行添加 Destroy(smokeEffect.gameObject)。

  • 运行场景,并修复机器人。

烟雾会立即消失。这是因为当粒子系统被销毁时,也会销毁当前正在处理的所有粒子,即使是刚刚创建的粒子。

但 Stop 只会阻止粒子系统创建粒子,已经存在的粒子可以正常结束自己的生命周期。这比所有粒子突然消失要看起来自然得多。

13.

实例化粒子系统

与飞弹一样,从粒子系统制作预制件后,便可以使用 Instantiate 函数创建粒子系统。

因此,对于仅发生一次的效果(例如被击中或拾取生命值可收集对象),你可以将对预制件的引用存储在公共变量中,并在应该产生效果时调用 Instantiate。如果 Particle System 未设置为 Looping 并且 Stop Action 设置为 Destroy,则会播放效果,然后销毁。

14。

originalSize = mask.rectTransform.rect.width;  //获取UI的宽度

mask.rectTransform.SetSizeWithCurrentAnchors(RcctTransform.Axis.Horizontal, originalSize * value);   //以当前锚点设置大小

代码行 using UnityEngine; 让你无需在 UnityEngine 中的所有类(如 GameObject)前面键入 UnityEngine。所以,如果你在 using.UnityEngine; 代码行下面直接添加 using UnityEngine.UI; 代码行&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值