Virtoools中,如何使用鼠标的方式,控制人物移动 (Part-1) - Virtools
在上一期的内容中,我们提到了如何运用行为模块(Building Blocks)的方法,及各个分类行为模块的位置。这次,我将以一个实例来说明,期使各位能有深刻的了解。在本次的范例中,我将说明「如何使用鼠标点选的方式,控制人物移动」,较实际的例子就是游戏了,大部分的游戏都使用这种方式来控制角色的移动,因为这样的控制方式很方便,也很简单,只要一个鼠标即可。
一开始,必须先做需求的功能分析。我们要做的是「使用鼠标点选的方式,控制人物移动」,从字面上我们可以得到,这里有两种对象:一个是鼠标,另一个是人物,要做的动作分别是「点选」与「移动」。鼠标点选的部分要有更进一步、更具体的想法,因为到底是要用鼠标左键点选?还是用鼠标右键点选?这里我们选择使用鼠标左键的方式,再来又有另外一个问题,鼠标左键要点选哪里才有效?在这范例中,使用者必须点选人物角色所站立的「地板物体」才有效。所以在鼠标点选的功能部分,可以整理出对于鼠标控制的具体想法:「使用者必须使用鼠标左键,点选人物角色所站立的地板物体」。
在人物移动控制的部分,必须知道要用什么方式移动,用走的?跑的?或是直接移动人物的3D坐标位置?在这范例中,我们使用走的方式,所以在人物的部分我们就必须要有走路的动作。但是要走到哪里?就必须等到点选鼠标左键做完后才知道。所以在人物的部分,可以整理出对于人物移动控制的具体想法:「人物是以走的方式,走向鼠标左键点选在地板上的位置」,必须说明的是,此位置是一个含有X,Y,Z坐标的位置。
所以整个看来,我们要提供「等待鼠标左键按下」的功能、「取得鼠标左键所点选的位置」的功能、「人物移动控制」的功能与「人物走向的目的地」的功能。
接下来的步骤,我们就要把我们的想法文件化,画出流程图会让人一目了然,知道每一步骤应该做的工作。
在上一期的内容中,我们提到了如何运用行为模块(Building Blocks)的方法,及各个分类行为模块的位置。这次,我将以一个实例来说明,期使各位能有深刻的了解。在本次的范例中,我将说明「如何使用鼠标点选的方式,控制人物移动」,较实际的例子就是游戏了,大部分的游戏都使用这种方式来控制角色的移动,因为这样的控制方式很方便,也很简单,只要一个鼠标即可。
一开始,必须先做需求的功能分析。我们要做的是「使用鼠标点选的方式,控制人物移动」,从字面上我们可以得到,这里有两种对象:一个是鼠标,另一个是人物,要做的动作分别是「点选」与「移动」。鼠标点选的部分要有更进一步、更具体的想法,因为到底是要用鼠标左键点选?还是用鼠标右键点选?这里我们选择使用鼠标左键的方式,再来又有另外一个问题,鼠标左键要点选哪里才有效?在这范例中,使用者必须点选人物角色所站立的「地板物体」才有效。所以在鼠标点选的功能部分,可以整理出对于鼠标控制的具体想法:「使用者必须使用鼠标左键,点选人物角色所站立的地板物体」。
在人物移动控制的部分,必须知道要用什么方式移动,用走的?跑的?或是直接移动人物的3D坐标位置?在这范例中,我们使用走的方式,所以在人物的部分我们就必须要有走路的动作。但是要走到哪里?就必须等到点选鼠标左键做完后才知道。所以在人物的部分,可以整理出对于人物移动控制的具体想法:「人物是以走的方式,走向鼠标左键点选在地板上的位置」,必须说明的是,此位置是一个含有X,Y,Z坐标的位置。
所以整个看来,我们要提供「等待鼠标左键按下」的功能、「取得鼠标左键所点选的位置」的功能、「人物移动控制」的功能与「人物走向的目的地」的功能。
接下来的步骤,我们就要把我们的想法文件化,画出流程图会让人一目了然,知道每一步骤应该做的工作。
有了具体想法之后,要画出流程图就很容易了,当流程图完成后,接下来的步骤,就要针对这几个功能,找出可供我们运用的BB。
(1) 等待鼠标左键按下:可以使用 「Logics > Message >」中的BB:Wait Message,在「Wait Message」的预设参数设定中,可以设定成"OnClick",设定完成后,此时的「Wait Message」就可以解释为:当鼠标左键点选该物体时…,其中「该物体」指的是「Wait Message」所作用的物体。这是一个很常用的功能,一定要记得。
(2) 取得鼠标左键所点选的点:这个功能算是重点,若不知道 Virtools有提供这样的功能,可能会想不到应该如何处理较好。这个功能我们可以使用「Interface > Screen」中的「BB:2D Picking」,在「2D Picking」的众多输出参数 pOut中,您可以找到「Intersection Point」,这个点的意义简单说就是点选的「点坐标位置」(世界坐标)。因为这个BB做了一些运算后,才会送出这个数值出来,其中的运算即是取得所点选的鼠标坐标位置,此坐标位置还是一个 2D向量,只有 X、Y两个值,接下来透过计算后,可以计算出平面上的X、Y值,对应到3D空间中,物体上的某一点。
(3) 人物移动控制:这部分比较简单,在Virtools控制人物动作的只有两个:一个是「BB:Character Controller」,另一个是「BB:Unlimited Controller」,都是放在 「Character > Movement」中。这里我们使用前者:「BB:Character Controller」,因为我们没有很多复杂的动作。
(4) 人物走向的目的地:这个功能一样可以在「Character > Movement」中找到:「BB:Character Go To」。
在了解Virtools Dev 中有哪些BB可以使用之后,接下来就要进入实作的部分了。我将使用 Virtools Dev 所提供的 Resource档案来示范,包含人物、人物动作与地板。
(step-1) Open Data Resource,打开资源文件"VirtoolsResources",一般预设状况都是开启