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; 代码行&#