MaxScript键盘控制盒子的移动

悲剧的是,只能在32位版本下使用,需要Max2008或更高版本,如果需要在其他版本下,其实也并非不可,只是会比较麻烦,此外,这种东西找个引擎来做更简单一些

ContractedBlock.gif ExpandedBlockStart.gif View Code
DotNet.loadAssembly " Microsoft.VisualBasic.dll "
DotNet.loadAssembly
" Microsoft.DirectX.DirectInput.dll "
Global KeyboardDevice

SystemGuid
= DotNetClass " Microsoft.DirectX.DirectInput.SystemGuid "
KeyboardDevice
= DotNetObject " Microsoft.DirectX.DirectInput.Device " SystemGuid.Keyboard
CooperativeLevelFlags
= DotNetClass " Microsoft.DirectX.DirectInput.CooperativeLevelFlags "
theCooperativeLevelFlags
= DotNet.CompareEnums CooperativeLevelFlags.Background CooperativeLevelFlags.NonExclusive 2
MaxHWND
= DotNetObject " System.IntPtr " (Windows.getMAXHWND() as integer)
KeyboardDevice.SetCooperativeLevel MaxHWND theCooperativeLevelFlags
KeyboardDevice.Acquire()


Fn TimerUpDate theSender TheEvent
=
(
Global Boxer,KeyboardDevice
if not IsValidNode Boxer do Boxer = Box()
moveStep
= 1
DxKey
= DotNetClass " Microsoft.DirectX.DirectInput.Key "
KeyboardState
= KeyboardDevice.GetCurrentKeyboardState()

if (KeyboardState.item DXKey.D) == true do Boxer.Pos.X += moveStep
if (KeyboardState.item DXKey.A) == true do Boxer.Pos.X -= moveStep
if (KeyboardState.item DXKey.W) == true do Boxer.Pos.Y += moveStep
if (KeyboardState.item DXKey.S) == true do Boxer.Pos.Y -= moveStep

)
DotNetTimer
= DotNetObject " System.Timers.Timer " 30
DotNet.AddEventHandler DotNetTimer
" Elapsed " TimerUpDate
DotNetTimer.Start()

转载于:https://www.cnblogs.com/sitt/archive/2011/07/07/2100510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值