How to determine the exact character position?

  • #1, by CrossMonday, 24. February 2014, 16:46 6 years ago
    Hi everyone,
    sorry in advance for my cheesy english. I would like to create a scene, in which the character gets hit (lets say by a punch or explosion) and therefore thumbles backwards and lands on the ground (shown in an animation). When he gets up again, his new position should be a couple feet away from where he was once standing. The problem is, that i dont know the exact character position, where he will be hit, it can be anywhere on the screen. So,
    1. How can i determine the exact character position at any given moment?
    2. How can i position my character in relation to his momentarily position (e.g. 50 pixels left on x-coordinate from where he is standing now)?

    Die Fragen nochmal in Deutsch:
    1. Wie kann ich die genaue Charakterposition zu jedem beliebigen Zeitpunkt bestimmen? Gibt es da irgendwelche Variablen, die man auslesen kann?
    2. Wie kann ich den Charakter in Relation zu seinem gegenwärtigen Standpunkt bewegen, z.B. 50 Pixel nach links auf der X-Achse?

    Thanks for any help.

    Newbie

    92 Posts


  • #2, by afrlmeMonday, 24. February 2014, 17:02 6 years ago
    hmm...
    -- examples of getting a character with Lua...
    game:getLink(VGameCurrentCharacter) -- get current character...
    getObject("Characters[character name here]") -- get linked character
    1
    2
    3
    4

    function: add script as a definition script...
    -- * local variables * --
    local char, pos

    -- * function for getting character position * --
    function setCharPos()
    char = game:getLink(VGameCurrentCharacter) -- get current character
    pos = char:getPoint(VCharacterPosition) -- stores character position into an x,y table
    -- * --
    char:setValue(VCharacterPosition, {x = pos.x - 50, y = pos.y)
    end
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    usage: create an execute a script action and add:
    setCharPos()
    1
    2

    This is just a crude example.

    Just out of interest... wouldn't it be simpler to just change to an outfit where the character walk cycle contains the character laying down/sliding & just use that to move character to x destination?

    P.S: an issue I see with what you are wanting to do:
    * you have to take into consideration the characters current scale as the gap between point a & b would need to be less the further away the character is.

    Imperator

    6771 Posts

  • #3, by CrossFriday, 28. February 2014, 07:33 6 years ago
    Thanks AFRLme,
    i will sure give it a try soon. Scaling is no issue for me, since the whole project is done in a side scroller perspective.

    Newbie

    92 Posts

  • #4, by constantinSaturday, 21. October 2017, 17:21 2 years ago
    leider habe ichs auf diese weise nicht geschafft. ich möchte den charakter nach einer bestimmten animation lediglich um 5 pixel weiter nach links bzw. rechts rücken. auf diese weise klappt das leider nicht. 

    Forum Fan

    167 Posts

  • #5, by sebastianSaturday, 21. October 2017, 17:54 2 years ago
    in dem oben gezeigten Script scheint ne Klammer zu fehlen. Ich hab hier mal nen zweizeiler für ditsch:

    pos = game.CurrentCharacter.CharacterPosition
    game.CurrentCharacter.CharacterPosition = {x =pos.x - 5, y = pos.y} 

    Thread Captain

    2331 Posts

  • #6, by constantinSunday, 22. October 2017, 07:46 2 years ago
    super! danke. kannst du mir noch sagen, wie ich statt "currentcharacter" einen bestimmten character anspreche? mit "game.Characters("katze").CharacterPosition" ging das nicht.

    Forum Fan

    167 Posts

  • #7, by sebastianSunday, 22. October 2017, 10:21 2 years ago
    verschiedene Möglichkeiten :

    Characters["katze"]
    Characters.katze
    Characters[4]   - - wenn die katze die Position  4 in der Charakterliste hat
    getObject("Characters[katze]")  - - super veraltete Methode



    Am einfachsten kannst du dir die direkten" Links" zu den Objekten holen, wenn du in der Liste per Rechtsklick anklickst und dann "Luapfad kopieren" (oder so ähnlich) anwählst. Danach per strg+v in dein Script einfügen. 

    Thread Captain

    2331 Posts

  • #8, by constantinSunday, 22. October 2017, 10:47 2 years ago
    Danke! Ich mach jetzt die ersten schritte mit lua. 

    Forum Fan

    167 Posts

  • #9, by sebastianSunday, 22. October 2017, 13:09 2 years ago
    Danke! Ich mach jetzt die ersten schritte mit lua. 

    Ich persönlich finde die Schreibweise Characters["katze"] immer noch am besten, da du hier in den Eckigen klammern auch einen vorher dynamisch definierten Wert angeben kannst, welcher bei den anderen Methoden dann nicht möglich wäre:

    char = "katze"
    Characters[char]
    1
    2

    bei

    Characters.katze 
    1

    geht das angeben einer variable verloren. wink



    Thread Captain

    2331 Posts

  • #10, by afrlmeSunday, 22. October 2017, 13:58 2 years ago
    Danke! Ich mach jetzt die ersten schritte mit lua. 

    Ich persönlich finde die Schreibweise Characters["katze"] immer noch am besten, da du hier in den Eckigen klammern auch einen vorher dynamisch definierten Wert angeben kannst, welcher bei den anderen Methoden dann nicht möglich wäre:

    char = "katze"
    Characters[char]
    1
    2

    bei

    Characters.katze 
    1

    geht das angeben einer variable verloren. wink



    +1 seconded. Using square brackets is best because you can input either the actual name wrapped in "name" or 'name' like so or you can input a variable or even link to another VisOBJ (visionaire object) in some cases such as an integer or string value stored inside of a variable or value that you created somewhere in the editor.

    Imperator

    6771 Posts

  • #11, by constantinMonday, 23. October 2017, 08:04 2 years ago
    thank you! 

    Forum Fan

    167 Posts

Write post