Difference between revisions of "AlignChar (CMS)"

From The Official Visionaire Studio: Adventure Game Engine Wiki
(Created page with "{| class="wikitable" style="width:100%" |- ! style="text-align:left" | Name !! style="text-align:left" | Type !! style="text-align:left" | By |- | alignChar("c", "t") || Defin...")
 
Line 7: Line 7:
  
 
This small function allows you to quickly align a character to another character.
 
This small function allows you to quickly align a character to another character.
 +
<div class="toccolours mw-collapsible mw-collapsed tbl-ds">
 +
<span class="bold">Additional Info</span>
 +
<div class="mw-collapsible-content">
 +
<div class="alt-bg">Alignment is based on character center which is usually set near the feet.</div>
 +
<div>There is no simple method for obtaining the top pixel of the current character animation.</div>
 +
</div></div>
  
 
== Instructions ==
 
== Instructions ==

Revision as of 19:12, 16 August 2014

Name Type By
alignChar("c", "t") Definition AFRLme

This small function allows you to quickly align a character to another character.

Additional Info

Alignment is based on character center which is usually set near the feet.
There is no simple method for obtaining the top pixel of the current character animation.

Instructions

1. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
2a. To align current character to another character...

alignChar("", "character_name")

2b. To align a specific character to another character...

alignObj("character_name", "character_name")

2c. To align a specific character to current character...

alignObj("character_name", "")

Main Script

function alignChar(c, t)
 if c == "" then c = game:getLink(VGameCurrentCharacter) else c = getObject("Characters[" .. c .. "]") end
 if t == "" then t = game:getLink(VGameCurrentCharacter) else t = getObject("Characters[" .. t .. "]") end
 -- + --
 local p1 = c:getPoint(VCharacterPosition)
 local p2 = t:getPoint(VCharacterPosition)
 -- + --
 local ax, ay
 ay = p1.y - p2.y
 ax = p2.x - p1.x
 -- + --
 local angle = math.deg( math.atan2(ay, ax) )
 if angle < 0 then angle = 360 + angle end
 -- + -- 
 c:setValue(VCharacterDirection, angle)
end

Syntax Breakdown

Name Type Description
c "string" This should be a "string" value containing the name of the character you want to affect; if string is empty it will default to current character.
t "string" This should be a "string" value containing the name of the character you want to align to; if string is empty it will default to current character.