骑砍2霸主MOD开发(12)-游戏实例GameEntity

一.GameEntity游戏实例

     <1.通用GameEntity,梯子,椅子,攻城云梯,战车等定义为GameEntity,一个GameEntity由若干GameEntityComponets组成,例如攻城云梯的轮子是一个独立Component,支架是一个独立Component,

    GameEntity = GameEntityComponent1 + GameEntityComponent2 +GameEntityComponent3

    <2.定制化GameEntity-Agent

    Agent.AgentVisuals = MeshComponent + ItemComponent + SkinedMeshComponent

获取AgentComponents
MBReadOnlyList<AgentComponent> list = Mission.MainAgent.Components;

获取ItemComponents
Equipment equipment = Mission.MainAgent.SpawnEquipment;
EquipmentElement equipmentElement = equipment.GetEquipmentFromSlot(EquipmentIndex.Weapon2);


获取Agent骨骼Skeleton
Skeleton skelton = Mission.MainAgent.AgentVisuals.GetSkeleton();


获取AgentVisual对应components
GameEntityComponent com = Mission.MainAgent.AgentVisuals                     
    .GetEntity().GetComponentAtIndex(1, GameEntity.ComponentType.Light);


添加GameEntity至Agent
sbyte boneIndex = Skeleton.GetBoneIndexFromName 
    (Mission.MainAgent.AgentVisuals.GetSkeleton().GetName(), "head");
Mission.MainAgent.AgentVisuals
    .AddPrefabToAgentVisualBoneByRealBoneIndex("ship_a", boneIndex);


    <3.定制化GameEntity-Item

    Items = ArmorComponent + HorseComponent + TradeItemComponent

                 + WeaponComponent + BannerComponent

#从XML文件中加载ItemObject
ItemObject itemObject = MBObjectManager
    .Instance.GetObject<ItemObject>("guarded_padded_vambrace");

#获取Armor/horse等相关属性
int armArmor = itemObject.ArmorComponent.ArmArmor;

二.GameEntity预制&动态创建

    1.在自己的MOD下创建Prefabs文件夹

    2.创建XML文件,配置Prefabs,添加GameEntity

<Prefabs>
	<game_entity name="empire_castle_keep_a_l2" old_prefab_name="" occlusion_body_name="bo_occ_empire_castle_keep_a_l2">
		<transform position="0.000, 0.000, 0.000" rotation_euler="0.000, 0.000, 0.000"/>
		<physics shape="bo_empire_castle_keep_a_l2" mass="1.000"/>
		<components>
			<meta_mesh_component name="empire_castle_keep_a_l2"/>
		</components>
	</game_entity>
</Prefabs>

    3.在Mission中初始化自己的GameEntity

       GameEntity ship = GameEntity

               .Instantiate(Mission.Scene, "ship_a", Mission.MainAgent.Frame);

三.GameEntityComponent

    1.GameEntityComponent种类:

		[EngineStruct("rglEntity_component_type", false)]
		public enum ComponentType : uint
		{
			MetaMesh,
			Light,
			CompositeComponent,
			ClothSimulator,
			ParticleSystemInstanced,
			TownIcon,
			CustomType1,
			Decal
		}

    2.GameEntityComponent销毁,创建,使用等事件统称为ScriptComponentBehavior

       <1.常用ScriptComponetBehavior

可使用Behavior:UsableMachine


可站立前进Behavior:StandingPoint


攻城武器Behavior:SiegeWeapon


大地图声音Behavior: <script name="sound_emitter">


大地图区域Behavior: <script name="path_converger">

       <2.在对应GameEntity中添加<script></script>,添加属于自己的ScriptComponentBehavior

	<game_entity name="siege_ladder_7m_spawner" old_prefab_name="">
		<transform position="0.000, 0.000, 0.000" rotation_euler="0.000, 0.000, 0.000"/>
		<physics mass="1.000"/>
		<scripts>
			<script name="SiegeLadderSpawner">
				<variables>
					<variable name="UpperStateRotationDegree" value="-19.000"/>
				</variables>
			</script>
		</scripts>
	</game_entity>

       <3.重写ScriptComponentBehavior的OnInit等方法,实现自己的相关功能

public class SiegeLadderSpawner : ScriptComponentBehavior
{
    protected override void OnPreInit()
	{
		base.OnPreInit();
	}

	protected override void OnInit()
	{
	}
}

相关推荐

  1. 2霸主MOD开发(12)-游戏实例GameEntity

    2024-06-10 18:10:03       12 阅读
  2. 2霸主MOD开发(5)-游戏事件

    2024-06-10 18:10:03       14 阅读
  3. 2霸主MOD开发(4)-游戏场景(scene)制作

    2024-06-10 18:10:03       16 阅读
  4. 2霸主MOD开发(11)-瓦兰迪亚火骑兵

    2024-06-10 18:10:03       7 阅读
  5. 2霸主MOD开发(14)-进击的巨人

    2024-06-10 18:10:03       11 阅读
  6. 2霸主MOD开发(8)-action_sets.xml骨骼动画

    2024-06-10 18:10:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 18:10:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 18:10:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 18:10:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 18:10:03       20 阅读

热门阅读

  1. 18-Nacos-NacosRule负载均衡

    2024-06-10 18:10:03       9 阅读
  2. Go 语言中的 Map

    2024-06-10 18:10:03       10 阅读
  3. 智能合约中时间依赖漏洞

    2024-06-10 18:10:03       10 阅读
  4. 【设计模式】封装、继承、抽象、多态

    2024-06-10 18:10:03       15 阅读
  5. arcgis开发记录

    2024-06-10 18:10:03       15 阅读
  6. Web前端Hack:深入探索、挑战与防范

    2024-06-10 18:10:03       12 阅读
  7. 12-Ribbon-负载均衡原理

    2024-06-10 18:10:03       12 阅读
  8. PyQt5 实现的批量改文件名的工具

    2024-06-10 18:10:03       12 阅读
  9. Spring Boot与RabbitMQ的整合

    2024-06-10 18:10:03       11 阅读
  10. 模板字符串

    2024-06-10 18:10:03       14 阅读