文章目录
- 一、在运行时改变绳子长度:ObiRopeCursor
- 1.1 Cursor Mu(光标μ)
- 1.2 Source Mu(源μ)
- 1.3 Direction(方向)
一、在运行时改变绳子长度:ObiRopeCursor
Obi提供了一个非常通用的组件来在运行时修改绳子的长度:ObiRopeCursor。当添加到ObiRope时,该组件将在其顶部放置一个光标,允许你从该点向任意方向“添加”或“移除”rope。把它想象成文本编辑应用程序中的普通光标:你可以把它放在文本的任何位置,并在它的位置添加/删除字符。
您只需要在运行时调用它的 ChangeLength(length)
方法。游标将自动负责在绳子上添加/移除粒子/约束以获得新的长度。
ObiRopeCursor有几个属性:
- Cursor Mu
- Source Mu
- Direction
1.1 Cursor Mu(光标μ)
这是光标的规范化位置,新粒子将被添加或删除。0将把它放在绳子的起点,1将把它放在绳子的末端。它之间的任何值都会将它放置在最靠近该值的粒子中。
1.2 Source Mu(源μ)
这是添加新粒子时复制粒子的规范化位置。0将把它放在绳子的起点,1将把它放在绳子的末端。它之间的任何值都会将它放置在最靠近该值的粒子中。
1.3 Direction(方向)
控制光标方向的布尔值。启用它将使光标指向绳子的末端。禁用它将使它指向起点。
例如,如果你想通过复制绳子上的第一个粒子在绳子中间插入新粒子,并使其向末端生长(你可能在开始时固定了一些粒子,并希望它们保持这种状态),你可以设置 Cursor Mu 为0.5f,其 Source Mu 为0,其方向为true。
使用 ObiRopeCursor 增加绳子的长度将使用蓝图粒子池中的粒子。确保池足够大(通过设置蓝图的“pooled particles”属性)以达到所需的最大长度。当减小绳子的长度时,未使用的粒子将返回到池中。
在处理光标(cursor)时,知道绳子的当前长度是非常有用的。为此使用rope的 RestLength 属性。下面的代码使用 W 和 S 键增加或减少绳子的长度。还可以控制更改的速度:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Obi;
public class RopeLengthController : MonoBehaviour {
public float speed = 1;
ObiRopeCursor cursor;
ObiRope rope;
void Start () {
cursor = GetComponentInChildren<ObiRopeCursor>();
rope = cursor.GetComponent<ObiRope>();
}
void Update () {
if (Input.GetKey(KeyCode.W))
cursor.ChangeLength(rope.restLength - speed * Time.deltaTime);
if (Input.GetKey(KeyCode.S))
cursor.ChangeLength(rope.restLength + speed * Time.deltaTime);
}
}
游标(光标)收绳
游标(光标)延伸绳