一.射击精度
? ? ?和CF等FPS射击类游戏一样,为了模拟实际射击过程中弓箭,子弹等投掷物的射击偏移,故设计精度系统控制不同武器不同兵种的使用武器能力,统称为游戏精度系统.
? ? ?由于骑砍可以在马上进行射击,故引擎内部也内置了骑射技能点以便控制玩家在骑马过程中射击的能力.
? ? ?武器精度:通过module_items.py修改武器参数实现弓箭,火枪等射击精度.
#火枪item配置,其中accuracy可以设置火枪精度
weight(1.5) 重量
|difficulty(0) 射击难度
|spd_rtng(38) 射速
|shoot_speed(160)射击速度
|thrust_damage(45,pierce) 伤害
|max_ammo(1)
|accuracy(65)精度
? ? ?兵种能力:通过module_troops.py修改兵种武器熟练度,骑射技能点等参数实现不同兵种差异
knows_horse_archery 骑射技能点
wp_archery(x) 弓箭熟练度
wp_crossbow(x) 弩熟练度
wp_throwing(x) 投掷熟练度
二.投掷物抛物线算法
? ? ?和根据兵种能力和武器能力等参数,在弓箭飞行时会有一定的偏移,在飞行时抛物线的弧度也会随精度而变化.
? ? ?骑砍引擎提供远程武器攻击时飞行物的发射API:
#通过设置发射飞行物的武器实现精度控制
add_missile = 1829 # (add_missile, <agent_id>, <starting_position>, <starting_speed_fixed_point>, <weapon_item_id>, <weapon_item_modifier>, <missile_item_id>, <missile_item_modifier>),
三.自定义精度系统
? ? 由于module_item.py是系统内置武器装备修改文件,故要实现自定义武器和精度,应该使用module_scene_prop.py配置不同的武器实现.
? ? 在scene_prop飞行时通过动态控制scene_prop的位置实现自定义物体飞行和碰撞.
(0, 0, 0, [],[
(init_position, pos1),
(get_player_agent_no, ":player_agent"),
(try_for_prop_instances, ":instance_no", "spr_huojian_fly"),
(prop_instance_get_position, pos3, ":instance_no"),
(position_move_y, pos3, 200),#动态修改位置
(try_end),
]),