125 lines
5.0 KiB
Markdown
125 lines
5.0 KiB
Markdown
---
|
||
sidebarDepth: 1
|
||
---
|
||
# 其它对象
|
||
|
||
## BindModel
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
把对象绑定到模型上, 支持绑定序列帧,粒子,文本和其它模型
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| virtualWorldObjectType | int | 对象类型枚举, 支持VirtualWorldObjectType.Sfx, VirtualWorldObjectType.Textboard和VirtualWorldObjectType.Particle, VirtualWorldObjectType.Model |
|
||
| objId | int | 要被绑定的对象的id |
|
||
| targetId | int | 绑定到的目标对象的id, 该对象删掉时,绑定在上面的对象也会删除 |
|
||
| posOffset | tuple(float,float,float) | 绑定后相对目标的位置偏移 |
|
||
| rotOffset | tuple(float,float,float) | 绑定后相对目标的旋转角度偏移 |
|
||
| boneName | str | 要绑定到目标对象哪个骨骼,默认为root |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否成功 |
|
||
|
||
- 备注
|
||
- 模型绑定模型暂时不支持绑定到具体骨骼
|
||
- 模型绑定仅支持原版模型绑定原版模型,或者网易骨骼模型绑定网易骨骼模型,不支持原版模型绑定到网易骨骼模型这种类型交错的绑定
|
||
- 序列帧,文本,粒子的生命周期与可见性需要玩家自己管理,虚拟世界在隐藏或者销毁时不做处理。
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
VirtualWorldObjectType = clientApi.GetMinecraftEnum().VirtualWorldObjectType
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
objId = virtualWorldComp.ModelCreateObject("datiangou", "run")
|
||
|
||
# 序列帧
|
||
frameEntityId = self.CreateEngineSfx("textures/sfxs/testSfx")
|
||
frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
|
||
frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
|
||
frameAniControlComp.SetLoop(True)
|
||
frameAniControlComp.Play()
|
||
virtualWorldComp.BindModel(VirtualWorldObjectType.Sfx, frameEntityId, objId, (0.0, 3.0, 0.0), (0.0, 0.0, 0.0), "root")
|
||
|
||
# 文本
|
||
textBoardComp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
|
||
textBoardId = textBoardComp.CreateTextBoardInWorld("Hello", (0.5, 0.4, 0.3, 0.8), (0, 0, 0, 1), True)
|
||
virtualWorldComp.BindModel(VirtualWorldObjectType.Textboard, textBoardId, objId, (0.0, 3.0, 0.0), (0.0, 0.0, 0.0), "root")
|
||
|
||
# 粒子
|
||
particleEntityId = self.CreateEngineParticle("effects/testParticle.json", (0.0, 0.0, 0.0))
|
||
parComp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
|
||
parComp.Play()
|
||
virtualWorldComp.BindModel(VirtualWorldObjectType.Particle, particleEntityId, objId, (0.0, 3.0, 0.0), (0.0, 0.0, 0.0), "root")
|
||
|
||
# 模型
|
||
childObj = virtualWorldComp.ModelCreateObject("datiangou", "fengxi")
|
||
virtualWorldComp.BindModel(VirtualWorldObjectType.Model, childObj, objId, (-1.0, 0.0, 0.0), (0.0, 0.0, 0.0))
|
||
```
|
||
|
||
|
||
|
||
## MoveToVirtualWorld
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
method in mod.client.component.virtualWorldCompClient.VirtualWorldCompClient
|
||
|
||
- 描述
|
||
|
||
把对象从主世界移到虚拟世界, 非绑定的序列帧,文本,粒子需要调用该方法后才会出现在虚拟世界中,绑定的可以省略调用该方法。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| virtualWorldObjectType | int | 对象类型枚举, 支持VirtualWorldObjectType.Sfx, VirtualWorldObjectType.Textboard和VirtualWorldObjectType.Particle |
|
||
| objId | int | 要移动的对象的id |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import client.extraClientApi as clientApi
|
||
VirtualWorldObjectType = clientApi.GetMinecraftEnum().VirtualWorldObjectType
|
||
virtualWorldComp = clientApi.GetEngineCompFactory().CreateVirtualWorld(clientApi.GetLevelId())
|
||
|
||
# 序列帧
|
||
frameEntityId = self.CreateEngineSfx("textures/sfxs/testSfx")
|
||
frameAniTransComp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
|
||
frameAniTransComp.SetPos((0.0, 0.0, 0.0))
|
||
frameAniControlComp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
|
||
frameAniControlComp.SetLoop(True)
|
||
frameAniControlComp.Play()
|
||
virtualWorldComp.MoveToVirtualWorld(VirtualWorldObjectType.Sfx, frameEntityId)
|
||
|
||
# 文本
|
||
textBoardComp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
|
||
textBoardId = textBoardComp.CreateTextBoardInWorld("Hello", (0.5, 0.4, 0.3, 0.8), (0, 0, 0, 1), True)
|
||
virtualWorldComp.MoveToVirtualWorld(VirtualWorldObjectType.Textboard, textBoardId)
|
||
|
||
# 粒子
|
||
particleEntityId = self.CreateEngineParticle("effects/testParticle.json", (0.0, 0.0, 0.0))
|
||
parComp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
|
||
parComp.Play()
|
||
virtualWorldComp.MoveToVirtualWorld(VirtualWorldObjectType.Particle, particleEntityId)
|
||
```
|
||
|
||
|
||
|