【unity】基于Obi的绳长动态修改(ObiRopeCursor)

一、在运行时改变绳子长度:ObiRopeCursor

Obi提供了一个非常通用的组件来在运行时修改绳子的长度:ObiRopeCursor。当添加到ObiRope时,该组件将在其顶部放置一个光标,允许你从该点向任意方向“添加”或“移除”rope。把它想象成文本编辑应用程序中的普通光标:你可以把它放在文本的任何位置,并在它的位置添加/删除字符。

您只需要在运行时调用它的 ChangeLength(length) 方法。游标将自动负责在绳子上添加/移除粒子/约束以获得新的长度。

ObiRopeCursor有几个属性:

  1. Cursor Mu
  2. Source Mu
  3. 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);
	}
}

请添加图片描述
游标(光标)收绳

请添加图片描述
游标(光标)延伸绳

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值