<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Extending the editor — Adventure Creator forum</title>
        <link>https://adventurecreator.org/forum/</link>
        <pubDate>Wed, 19 Aug 2026 05:23:56 +0000</pubDate>
        <language>en</language>
            <description>Extending the editor — Adventure Creator forum</description>
    <atom:link href="https://adventurecreator.org/forum/categories/extending-the-editor/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Navigation Mesh Creator from mask and height map/depth map</title>
        <link>https://adventurecreator.org/forum/discussion/16903/navigation-mesh-creator-from-mask-and-height-map-depth-map</link>
        <pubDate>Sun, 02 Aug 2026 06:31:42 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16903@/forum/discussions</guid>
        <description><![CDATA[<p>Okay, this is created by a lot of help from Opus, GPT, Gemini and myself with a lot of experimenting to achieve what I want.<br />
The idea is to take an image and a "walking" mask, <a href="https://imgur.com/a/brFvR2P" rel="nofollow">https://imgur.com/a/brFvR2P</a> , and an optional height map (if there are some stairs for example) and generate a navigation mesh that the player can navigate on it in a 2.5D game.</p>

<p><a href="https://pastebin.com/rRbXn9fm" rel="nofollow">https://pastebin.com/rRbXn9fm</a></p>

<p>Features:</p>

<ul>
<li>Can work in a hotspot and a navigation mesh</li>
<li>Can use mesh source = points instead of mask if you define points</li>
<li>Optional height map to create navigation mesh above the standard "floor" which is by default at -2.72 Y.</li>
<li>Optional depth map</li>
<li>Optional helper to til the camera based on horizon line (very important for rooms that have much tilt in the bg)</li>
<li>Downsampling/Simplification if the mesh is too slow for the pathfinder to work</li>
<li>Optional left/right/bottom/top extensions or mesh multiplier</li>
<li>Gizmo showing modes</li>
<li>Bake to asset so the script is not needed at runtime</li>
</ul>

<p>Put it as a component to a "Collision Cube".</p>

<p>Thanks to this I was able to create the "floor" for all of my games.</p>
]]>
        </description>
    </item>
    <item>
        <title>Transform Object Action</title>
        <link>https://adventurecreator.org/forum/discussion/16902/transform-object-action</link>
        <pubDate>Sun, 02 Aug 2026 06:19:20 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16902@/forum/discussions</guid>
        <description><![CDATA[<p>Often I want to transform any object, but the default transform in AC's list only transforms moveables. Here's a custom action you may want to import.</p>

<pre><code>using UnityEngine;
using System.Collections.Generic;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace AC
{
    [System.Serializable]
    public class ActionTransformSet : Action
    {
        public GameObject objectToAffect;
        public int constantID;
        public int parameterID = -1;

        public bool affectPosition = false;
        public Vector3 newPosition;

        public bool affectRotation = false;
        public Vector3 newRotation;

        public bool affectScale = true;
        public Vector3 newScale = Vector3.one;

        public bool isRelative = false;
        public bool useLocalSpace = true;

        public bool changeOverTime = false;
        public float transitionTime = 1f;

        // --- runtime-only state, not serialized ---
        private bool isRunning;
        private float startTimeAbs;
        private Vector3 startPosition, targetPosition;
        private Vector3 startRotation, targetRotation;
        private Vector3 startScale, targetScale;

        public override ActionCategory Category { get { return ActionCategory.Object; } }
        public override string Title { get { return "Set Transform"; } }
        public override string Description { get { return "Sets the position, rotation and/or scale of any GameObject directly - the object does not need to be 'Moveable'."; } }

        public override void AssignValues(List&lt;ActionParameter&gt; parameters)
        {
            objectToAffect = AssignFile(parameters, parameterID, constantID, objectToAffect);
        }

        public override float Run()
        {
            if (objectToAffect == null)
            {
                return 0f;
            }

            if (!isRunning)
            {
                isRunning = true;
                startTimeAbs = Time.time;

                startPosition = useLocalSpace ? objectToAffect.transform.localPosition : objectToAffect.transform.position;
                startRotation = objectToAffect.transform.localEulerAngles;
                startScale = objectToAffect.transform.localScale;

                targetPosition = affectPosition ? (isRelative ? startPosition + newPosition : newPosition) : startPosition;
                targetRotation = affectRotation ? (isRelative ? startRotation + newRotation : newRotation) : startRotation;
                targetScale = affectScale ? (isRelative ? startScale + newScale : newScale) : startScale;

                if (!changeOverTime || transitionTime &lt;= 0f)
                {
                    Apply(1f);
                    isRunning = false;
                    return 0f;
                }

                Apply(0f);
                return 0.02f;
            }
            else
            {
                float t = Mathf.Clamp01((Time.time - startTimeAbs) / transitionTime);
                Apply(t);

                if (t &gt;= 1f)
                {
                    isRunning = false;
                    return 0f;
                }
                return 0.02f;
            }
        }

        public override void Skip()
        {
            if (objectToAffect == null) return;

            Vector3 basePos = useLocalSpace ? objectToAffect.transform.localPosition : objectToAffect.transform.position;
            Vector3 baseRot = objectToAffect.transform.localEulerAngles;
            Vector3 baseScale = objectToAffect.transform.localScale;

            if (affectPosition)
            {
                Vector3 p = isRelative ? basePos + newPosition : newPosition;
                if (useLocalSpace) objectToAffect.transform.localPosition = p;
                else objectToAffect.transform.position = p;
            }
            if (affectRotation)
            {
                objectToAffect.transform.localEulerAngles = isRelative ? baseRot + newRotation : newRotation;
            }
            if (affectScale)
            {
                objectToAffect.transform.localScale = isRelative ? baseScale + newScale : newScale;
            }
        }

        private void Apply(float t)
        {
            if (objectToAffect == null) return;

            Vector3 pos = Vector3.Lerp(startPosition, targetPosition, t);
            Vector3 rot = Vector3.Lerp(startRotation, targetRotation, t);
            Vector3 scale = Vector3.Lerp(startScale, targetScale, t);

            if (affectPosition)
            {
                if (useLocalSpace) objectToAffect.transform.localPosition = pos;
                else objectToAffect.transform.position = pos;
            }
            if (affectRotation)
            {
                objectToAffect.transform.localEulerAngles = rot;
            }
            if (affectScale)
            {
                objectToAffect.transform.localScale = scale;
            }
        }

#if UNITY_EDITOR
        public override void ShowGUI(List&lt;ActionParameter&gt; parameters)
        {
            parameterID = Action.ChooseParameterGUI("Object to affect:", parameters, parameterID, ParameterType.GameObject);
            if (parameterID &lt; 0)
            {
                objectToAffect = (GameObject)EditorGUILayout.ObjectField("Object to affect:", objectToAffect, typeof(GameObject), true);
                constantID = FieldToID(objectToAffect, constantID);
                objectToAffect = IDToField(objectToAffect, constantID, true);
            }

            EditorGUILayout.Space();
            isRelative = EditorGUILayout.Toggle("Relative change?", isRelative);
            useLocalSpace = EditorGUILayout.Toggle("Use local position?", useLocalSpace);

            EditorGUILayout.Space();
            affectPosition = EditorGUILayout.Toggle("Affect position?", affectPosition);
            if (affectPosition) newPosition = EditorGUILayout.Vector3Field("New position:", newPosition);

            affectRotation = EditorGUILayout.Toggle("Affect rotation?", affectRotation);
            if (affectRotation) newRotation = EditorGUILayout.Vector3Field("New rotation (euler):", newRotation);

            affectScale = EditorGUILayout.Toggle("Affect scale?", affectScale);
            if (affectScale) newScale = EditorGUILayout.Vector3Field("New scale:", newScale);

            EditorGUILayout.Space();
            changeOverTime = EditorGUILayout.Toggle("Change over time?", changeOverTime);
            if (changeOverTime)
            {
                transitionTime = EditorGUILayout.FloatField("Transition time (s):", transitionTime);
            }

            AfterRunningOption();
        }

        public override string SetLabel()
        {
            if (objectToAffect != null)
            {
                return objectToAffect.name;
            }
            return string.Empty;
        }
#endif
    }
}
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Auto Switch Camera + Marker + Navigation Mesh into single action</title>
        <link>https://adventurecreator.org/forum/discussion/16901/auto-switch-camera-marker-navigation-mesh-into-single-action</link>
        <pubDate>Sun, 02 Aug 2026 06:15:40 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16901@/forum/discussions</guid>
        <description><![CDATA[<p>Very often in my game I switch Camera and Navigation Mesh and Marker position for my player, i.e. 3 actions.<br />
So I created a script that would merge all these into one.</p>

<pre><code>#if UNITY_EDITOR
using UnityEditor;
#endif
using System.Collections.Generic;
using UnityEngine;

namespace AC
{
    [System.Serializable]
    public class ActionSceneEntrySetup : Action
    {
        // --- Camera ---
        public _Camera newCamera;
        public int newCameraConstantID = 0;
        public int newCameraParameterID = -1;
        public bool instantCameraSwitch = true;
        public float cameraTransitionTime = 0f;

        // --- Marker / teleport ---
        public Marker teleportMarker;
        public int markerConstantID = 0;
        public int markerParameterID = -1;
        public bool copyRotation = true;

        // --- NavMesh ---
        public NavigationMesh newNavMesh;
        public int navMeshConstantID = 0;
        public int navMeshParameterID = -1;

        public override ActionCategory Category { get { return ActionCategory.Custom; } }
        public override string Title { get { return "Scene entry setup (Camera + Teleport + NavMesh)"; } }
        public override string Description
        {
            get
            {
                return "Switches the active GameCamera, teleports the Player to a Marker (optionally copying " +
                       "its rotation), and sets the scene's active NavigationMesh in one step. Intended to run " +
                       "inside the destination scene's OnStart cutscene, right after a Scene: Change action.";
            }
        }

        public override void AssignValues(List&lt;ActionParameter&gt; parameters)
        {
            newCamera = AssignFile&lt;_Camera&gt;(parameters, newCameraParameterID, newCameraConstantID, newCamera);
            teleportMarker = AssignFile&lt;Marker&gt;(parameters, markerParameterID, markerConstantID, teleportMarker);
            newNavMesh = AssignFile&lt;NavigationMesh&gt;(parameters, navMeshParameterID, navMeshConstantID, newNavMesh);
        }

        public override float Run()
        {
            // 1) Switch camera
            if (newCamera != null &amp;&amp; KickStarter.mainCamera != null)
            {
                KickStarter.mainCamera.SetGameCamera(newCamera);
                if (!instantCameraSwitch &amp;&amp; cameraTransitionTime &gt; 0f)
                {
//                    KickStarter.mainCamera.Crossfade(cameraTransitionTime);
                }
            }

            // 2) Teleport player to marker (+ optional rotation copy)
            if (teleportMarker != null &amp;&amp; KickStarter.player != null)
            {
                Player player = KickStarter.player;

                // Stop any pathfinding / movement before warping
                player.Halt();
                player.Teleport(teleportMarker.transform.position);

                if (copyRotation)
                {
                    player.SetRotation(teleportMarker.transform.rotation);
                }
            }

            // 3) Set active NavMesh for the scene
            if (newNavMesh != null &amp;&amp; KickStarter.sceneSettings != null)
            {
                if (KickStarter.sceneSettings.navMesh != null &amp;&amp; KickStarter.sceneSettings.navMesh != newNavMesh)
                {
                    KickStarter.sceneSettings.navMesh.TurnOff();
                }
                KickStarter.sceneSettings.navMesh = newNavMesh;
                newNavMesh.TurnOn();
            }

            return 0f;
        }

#if UNITY_EDITOR

        public override void ShowGUI(List&lt;ActionParameter&gt; parameters)
        {
            EditorGUILayout.LabelField("Camera", EditorStyles.boldLabel);
            newCameraParameterID = Action.ChooseParameterGUI("New camera:", parameters, newCameraParameterID, ParameterType.GameObject);
            if (newCameraParameterID &lt; 0)
            {
                newCamera = (_Camera)EditorGUILayout.ObjectField("New camera:", newCamera, typeof(_Camera), true);
                newCameraConstantID = FieldToID&lt;_Camera&gt;(newCamera, newCameraConstantID);
                newCamera = IDToField&lt;_Camera&gt;(newCamera, newCameraConstantID, false);
            }
            instantCameraSwitch = EditorGUILayout.Toggle("Instant switch?", instantCameraSwitch);
            if (!instantCameraSwitch)
            {
                cameraTransitionTime = EditorGUILayout.FloatField("Transition time (s):", cameraTransitionTime);
            }

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Teleport", EditorStyles.boldLabel);
            markerParameterID = Action.ChooseParameterGUI("Marker to teleport to:", parameters, markerParameterID, ParameterType.GameObject);
            if (markerParameterID &lt; 0)
            {
                teleportMarker = (Marker)EditorGUILayout.ObjectField("Marker to teleport to:", teleportMarker, typeof(Marker), true);
                markerConstantID = FieldToID&lt;Marker&gt;(teleportMarker, markerConstantID);
                teleportMarker = IDToField&lt;Marker&gt;(teleportMarker, markerConstantID, false);
            }
            copyRotation = EditorGUILayout.Toggle("Copy marker rotation?", copyRotation);

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("NavMesh", EditorStyles.boldLabel);
            navMeshParameterID = Action.ChooseParameterGUI("New NavMesh:", parameters, navMeshParameterID, ParameterType.GameObject);
            if (navMeshParameterID &lt; 0)
            {
                newNavMesh = (NavigationMesh)EditorGUILayout.ObjectField("New NavMesh:", newNavMesh, typeof(NavigationMesh), true);
                navMeshConstantID = FieldToID&lt;NavigationMesh&gt;(newNavMesh, navMeshConstantID);
                newNavMesh = IDToField&lt;NavigationMesh&gt;(newNavMesh, navMeshConstantID, false);
            }
        }

        public override string SetLabel()
        {
            if (newCamera != null &amp;&amp; teleportMarker != null)
            {
                return newCamera.name + " / " + teleportMarker.name;
            }
            if (teleportMarker != null) return teleportMarker.name;
            if (newCamera != null) return newCamera.name;
            return string.Empty;
        }

        public override void AssignConstantIDs(bool saveScriptsToo, bool fromAssetFile)
        {
            AssignConstantID&lt;_Camera&gt;(newCamera, newCameraConstantID, newCameraParameterID);
            AssignConstantID&lt;Marker&gt;(teleportMarker, markerConstantID, markerParameterID);
            AssignConstantID&lt;NavigationMesh&gt;(newNavMesh, navMeshConstantID, navMeshParameterID);
        }

#endif

#if UNITY_EDITOR
        [UnityEditor.MenuItem("Adventure Creator/Actions/New: Scene entry setup")]
        public static void CreateNew_MenuHint() { }
#endif
    }
}
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Inventory Sprite Fade-Out</title>
        <link>https://adventurecreator.org/forum/discussion/16900/inventory-sprite-fade-out</link>
        <pubDate>Sun, 02 Aug 2026 05:47:15 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16900@/forum/discussions</guid>
        <description><![CDATA[<p>This is created with the help of Opus. <br />
It allows you to specify a list of inventory IDs and the sprites to fade in/fade out if the object is taken.<br />
I put it in any active GameObject and it automatically fades out when i add the item in the inventory.</p>

<p><a href="https://pastebin.com/ijiNa1Tc" rel="nofollow">https://pastebin.com/ijiNa1Tc</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Background Changer on Variable</title>
        <link>https://adventurecreator.org/forum/discussion/16899/background-changer-on-variable</link>
        <pubDate>Sun, 02 Aug 2026 05:39:32 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16899@/forum/discussions</guid>
        <description><![CDATA[<p>A script that allows a Background Image to change automatically textures on specific variable values.<br />
E.g. You have a camera that shows a house in day, afternoon, night, so you want 3 textures.</p>

<pre><code>using UnityEngine;
using AC;

public class ACBackgroundSwitcher : MonoBehaviour
{
    [System.Serializable]
    public struct TextureEntry
    {
        public int variableValue;
        public Texture2D texture;
    }

    [Header("AC Global Variable")]
    public int variableID = 1;

    [Header("Active Camera Gate")]
    public _Camera targetCamera;  

    [Header("Textures")]
    public TextureEntry[] entries;

    private BackgroundImage bgImage;
    private int lastVal = int.MinValue;

    void Awake()
    {
        bgImage = GetComponent&lt;BackgroundImage&gt;();
    }

    void Update()
    {
        if (!IsTargetCameraActive())
        {
            return; /
        }

        int val = GlobalVariables.GetIntegerValue(variableID);
        if (val != lastVal)
        {
            lastVal = val;
            ApplyTexture(val);
        }
    }

    bool IsTargetCameraActive()
    {
        if (targetCamera == null) return false; 
        return KickStarter.mainCamera != null
            &amp;&amp; KickStarter.mainCamera.attachedCamera == targetCamera;
    }

    void ApplyTexture(int val)
    {
        foreach (var entry in entries)
        {
            if (entry.variableValue == val)
            {
                bgImage.backgroundTexture = entry.texture;
                BackgroundImageUI.Instance.SetTexture(entry.texture);
                return;
            }
        }

        Debug.LogWarning($"[ACBackgroundSwitcher] Textre Not Found {val} (Variable ID: {variableID})");
    }
}
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Auto-Switch Background Image for 2.5D Camera</title>
        <link>https://adventurecreator.org/forum/discussion/16898/auto-switch-background-image-for-2-5d-camera</link>
        <pubDate>Sun, 02 Aug 2026 05:37:46 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>mchourdakis</dc:creator>
        <guid isPermaLink="false">16898@/forum/discussions</guid>
        <description><![CDATA[<p>A script that, when a camera is selected, automatically switches the background without having to press the "Set Active" button, handy if you have a lot of cameras.</p>

<pre><code>#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using AC;

[InitializeOnLoad]
public static class Auto25DBackgroundOnSelect
{
    static Auto25DBackgroundOnSelect()
    {
        Selection.selectionChanged += OnSelectionChanged;
    }

    static void OnSelectionChanged()
    {
        if (Application.isPlaying) return;

        GameObject go = Selection.activeGameObject;
        if (go == null) return;

        GameCamera25D cam = go.GetComponent&lt;GameCamera25D&gt;();
        if (cam == null || cam.backgroundImage == null) return;

        cam.SetActiveBackground();
        EditorApplication.QueuePlayerLoopUpdate();
        SceneView.RepaintAll();
    }
}
#endif
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Actionlist colours</title>
        <link>https://adventurecreator.org/forum/discussion/16830/actionlist-colours</link>
        <pubDate>Sat, 06 Jun 2026 11:47:36 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>nirvan</dc:creator>
        <guid isPermaLink="false">16830@/forum/discussions</guid>
        <description><![CDATA[<p>Hi!</p>

<p>As you know, in actionlist you can colour each action simply assigning one from his menu. Currently there are 7 colours including the default one.<br />
My question is simple: is it somehow possible to have more colours?<br />
thanks</p>
]]>
        </description>
    </item>
    <item>
        <title>Direct control camera</title>
        <link>https://adventurecreator.org/forum/discussion/16813/direct-control-camera</link>
        <pubDate>Fri, 22 May 2026 08:21:39 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>CharlesLondon</dc:creator>
        <guid isPermaLink="false">16813@/forum/discussions</guid>
        <description><![CDATA[I have a game where there is no walking and it’s  directly controlled. Is there any way to achieve a follow camera or natural handheld feel to simulate the subtle mouse-based camera movement you get in the follow mouse camera settings?( so parallax can look nice etc)Especially if the game is primarily controlled with one button / cycle on theD-pad rather than full directional movement. I wondered if there was a built in option so can work smoothly with action scripts <img src="https://adventurecreator.org/forum/resources/emoji/smile.png" title=":)" alt=":)" height="20" /><br />
<br />
Thanks<br />
<br />
Using Unity 6 on Mac.]]>
        </description>
    </item>
    <item>
        <title>Streamlining long conversations [Suggested feature - 2 way chat action]</title>
        <link>https://adventurecreator.org/forum/discussion/16806/streamlining-long-conversations-suggested-feature-2-way-chat-action</link>
        <pubDate>Mon, 18 May 2026 10:22:59 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>andiliddell</dc:creator>
        <guid isPermaLink="false">16806@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all,</p>

<p>There's some points in my game where the player has extended "chats" with other NPCs, where they basically take it in turns to say a line or two, for a few rounds of back and forth.</p>

<p>The standard "dialog action" means you end up with a huge chain of actions in the editor, each time, each character says something in response, for something that could be handled in a neat little new action called a "chat" perhaps?</p>

<p>I've setup something that works for the time being, using parameters. See screenshot below:<br />
<a href="https://drive.google.com/file/d/1RKrfTMRn-oI-2CNJ6C93zIGSS9TXUugO/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1RKrfTMRn-oI-2CNJ6C93zIGSS9TXUugO/view?usp=sharing</a></p>

<p>You get the whole 2 person chat in one Node, making it easier to read, edit and collapse - and it's much easier to look at too, in a busy actionlist.</p>

<p>Sadly it has a few issues:<br />
1) These dialogue lines wont be collected by the language system because they're parameter strings.<br />
2) The Run actionlist node UI is too narrow, meaning it takes up alot of vertical space, and input boxes are narrow<br />
3) It's limited to the amount of parameters I've pre-created (8 in this case)- it would be lovely to just be able to set the number of dialog lines at the top and just fill em all in.</p>

<p>Anyway, I thought this was an interesting half-way-house, and wondered if Chris would consider something like this in a future version to streamline these big 2 person chats, and have them collected by the language system?</p>

<p>Cheers</p>
]]>
        </description>
    </item>
    <item>
        <title>Stuck on Color Collision Detection for Weeks – Need Help!</title>
        <link>https://adventurecreator.org/forum/discussion/15763/stuck-on-color-collision-detection-for-weeks-need-help</link>
        <pubDate>Mon, 17 Feb 2025 11:28:38 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>TheLostPenny</dc:creator>
        <guid isPermaLink="false">15763@/forum/discussions</guid>
        <description><![CDATA[<p>Hello everyone, and first of all, I apologize if my request goes beyond the usual topics related to Adventure Creator. However, AC is the reason I started this journey as an indie dev, and I’m slowly trying to push myself further by implementing small scripts and additional mechanics that will eventually work on a solid AC foundation. I’ve always found a lot of help in this forum and this community, so I hope someone can guide me through this issue.</p>

<p>I'm trying to create a combat system based on color collisions, but I'm not a programmer—I have never written code in my life. However, I recently started trying with various AIs (ChatGPT and Copilot), and I must say that for other small scripts to improve my game, they worked quite well for me. But now, I'm stuck on this issue for weeks.</p>

<p>In my game, the player can draw the sprites of their own "monster" and then make them fight against pre-drawn enemies. The system is based on pixel art and colors. Basically, the player draws on a fully transparent 32x32 PNG texture, which is then overwritten and loaded into another scene where the combat takes place.</p>

<p>In the combat scene, I managed to create a script that generates a pixel-perfect collider around the colored pixels. Then, I added a controller that makes the sprites move toward each other and rigidbodies that make them bounce backward on each collision. For now, the basic system should work so that if the contact happens on red, it deals damage, and if it happens on blue, it blocks the damage. Unfortunately, I'm stuck on the color detection script.</p>

<p>I have two main problems:</p>

<p>1) The collisions (from what I was able to analyze) almost always happen outside the collider. As you can see in the image, there is a black pixel that is a gizmo created by a script, allowing me to visualize where the contact occurred on each sprite. But I don't know if this can be fixed or if it even matters. I mean, even if the contact happens outside the collider, I was looking for a system to detect the nearby pixels.</p>

<p>2) The real main issue is that I haven't been able to make the color detection script work in any way (which Copilot writes under my instructions). I tried using both raycast and a search expansion system based on radius until it finds a colored pixel, making it ignore transparent pixels. However, the color detection system often gets the color wrong, detecting the wrong color from who knows where.</p>

<p>I'm attaching the code here as well. I hope there is a kind soul who can help me—this is the only complex component I need to complete my game in the few free hours I have after work, hoping that one day this could become my full-time job.</p>

<p>I don't know if my approach is wrong and if a different method would be better to achieve what I want, or if it's just the AI failing to write functional code.</p>

<p>Sorry for my bad English, I'm Italian.</p>

<p>CODE:<br />
<a href="https://pastebin.com/gGFTyLgR" rel="nofollow">https://pastebin.com/gGFTyLgR</a></p>

<p>IMAGE<br />
<a href="https://imgur.com/a/6xomUl7" rel="nofollow">https://imgur.com/a/6xomUl7</a></p>
]]>
        </description>
    </item>
    <item>
        <title>Streamlining Speech Tokens With 'TouchPortal'</title>
        <link>https://adventurecreator.org/forum/discussion/16262/streamlining-speech-tokens-with-touchportal</link>
        <pubDate>Wed, 17 Sep 2025 22:08:26 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Cintiq</dc:creator>
        <guid isPermaLink="false">16262@/forum/discussions</guid>
        <description><![CDATA[<p>I have been placing a lot of dialogue into my game lately and was finding it cumbersome to copy/paste all the different tokens for the characters emotions etc, into the text box. Then I found Touch portal! It is an app that allows you to use any old smartphone as a hotkey deck for your PC. I now have my old Pixel phone as my dedicated AC and Unity Hotkey Deck and its awesome! Sorry if this is old news to a lot of people, but just thought I would share!<br />
<img src="https://i.imgur.com/GwLyRtb.png" alt="" title="" /><br />
<img src="https://i.imgur.com/snnYE9p.jpeg" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Final IK Integration Errors</title>
        <link>https://adventurecreator.org/forum/discussion/16228/final-ik-integration-errors</link>
        <pubDate>Wed, 03 Sep 2025 18:22:18 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Deckard_89</dc:creator>
        <guid isPermaLink="false">16228@/forum/discussions</guid>
        <description><![CDATA[<p>It seems this integration script on the wiki (for using Final IK's interaction system) no longer works.<br />
<a rel="nofollow" href="https://adventure-creator.fandom.com/wiki/FinalIK_Interactions_Integration_(AC_Action)" title="Link">Link</a></p>

<p>The following errors are shown when the script is placed in AC's Actions folder:</p>

<ul>
<li><em>Assets\AdventureCreator\Scripts\Actions\FinalIK_RunInteraction.cs(7,7): error CS0246: The type or namespace name 'RootMotion' could not be found (are you missing a using directive or an assembly reference?)</em></li>
<li>Assets\AdventureCreator\Scripts\Actions\FinalIK_RunInteraction.cs(38,16): error CS0246: The type or namespace name 'InteractionSystem' could not be found (are you missing a using directive or an assembly reference?)</li>
<li>Assets\AdventureCreator\Scripts\Actions\FinalIK_RunInteraction.cs(46,16): error CS0246: The type or namespace name 'InteractionObject' could not be found (are you missing a using directive or an assembly reference?)</li>
<li>Assets\AdventureCreator\Scripts\Actions\FinalIK_RunInteraction.cs(54,16): error CS0246: The type or namespace name 'FullBodyBipedEffector' could not be found (are you missing a using directive or an assembly reference?)</li>
</ul>

<p>The errors were only shown once the file was placed in the Actions folder (AC_Scripts_Actions), as per the instructions on the wiki. If the file is removed from the Actions folder, the errors go away (but then of course, the action can't be used).</p>
]]>
        </description>
    </item>
    <item>
        <title>Custom Action - Open URL</title>
        <link>https://adventurecreator.org/forum/discussion/12009/custom-action-open-url</link>
        <pubDate>Fri, 26 Nov 2021 17:53:47 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Temmy</dc:creator>
        <guid isPermaLink="false">12009@/forum/discussions</guid>
        <description><![CDATA[<p>Just put this simple action together which takes a URL and then will do Unity's <code>Application.OpenURL()</code> to open the URL in whatever web browser is your system default:</p>

<p><img src="https://i.imgur.com/PhYn1X3.png" alt="" title="" /></p>

<p>Just paste this into a script called ActionOpenURL:</p>

<pre><code>using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace AC
{
    [System.Serializable]
    public class ActionOpenURL : Action
    {
        // Declare variables here
        public string url;

        public ActionOpenURL()
        {
            this.isDisplayed = true;
            category = ActionCategory.Custom;
            title = "Open URL";
            description = "Opens a URL using Application.OpenURL()";
        }

        override public float Run ()
        {
            Application.OpenURL(url);
            Debug.Log("URL opened");

            return 0f;
        }

        #if UNITY_EDITOR

        override public void ShowGUI ()
        {
            // Action-specific Inspector GUI code her
            url = EditorGUILayout.TextField("URL to open:", url);

            AfterRunningOption ();
        }
        #endif
    }
}
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Integrate Steam Achievements?</title>
        <link>https://adventurecreator.org/forum/discussion/15371/integrate-steam-achievements</link>
        <pubDate>Fri, 27 Sep 2024 23:56:01 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>ABABAB</dc:creator>
        <guid isPermaLink="false">15371@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all,</p>

<p>Hope you are doing well! Is there a standard way to integrate steam achievements with a game made in AC? <br />
Thank you!</p>
]]>
        </description>
    </item>
    <item>
        <title>Container that shows the inventory items properties</title>
        <link>https://adventurecreator.org/forum/discussion/16087/container-that-shows-the-inventory-items-properties</link>
        <pubDate>Mon, 30 Jun 2025 03:32:30 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>ProgrammingPanda</dc:creator>
        <guid isPermaLink="false">16087@/forum/discussions</guid>
        <description><![CDATA[<p>Hi, I've been looking for the right way to implement this. Basically, I have a list of inventory items with a property called "Time Collected" and I want to display it in the container UI.</p>

<p>I've setup my container to have the textBox and made a custom script to load it but I can't make it work so I am now heading to the forums to pray to the AC God.</p>

<p>Here's how my inventory layout looks like:<br />
<a href="https://imgur.com/a/C3Yk29r" rel="nofollow">https://imgur.com/a/C3Yk29r</a></p>

<p>So I want my inventory items to display the time directly on their lower right.</p>
]]>
        </description>
    </item>
    <item>
        <title>Unity Third Person Controller integration</title>
        <link>https://adventurecreator.org/forum/discussion/9703/unity-third-person-controller-integration</link>
        <pubDate>Tue, 28 Jan 2020 17:51:30 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Yakuzza</dc:creator>
        <guid isPermaLink="false">9703@/forum/discussions</guid>
        <description><![CDATA[<p>Hi All! I've tried to use the script from adventure-creator fandom for Unity Third Person Controller. Generally, it works, except I'm still able to control the characters somewhat during cutscenes.<br />
<a href="https://gfycat.com/rashunhealthydingo" rel="nofollow">https://gfycat.com/rashunhealthydingo</a><br />
I'm not sure if the integration script was written by someone from this community, but maybe somebody got it working properly?</p>

<p>Links for the integration script<br />
<a href="https://adventure-creator.fandom.com/wiki/Unity_Third_Person_Controller_integration" rel="nofollow">https://adventure-creator.fandom.com/wiki/Unity_Third_Person_Controller_integration</a><br />
And Unity's asset<br />
<a href="https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-2017-3-32351" rel="nofollow">https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-2017-3-32351</a></p>
]]>
        </description>
    </item>
    <item>
        <title>&quot;Play From Here&quot; Functionality with Adventure Creator</title>
        <link>https://adventurecreator.org/forum/discussion/15935/play-from-here-functionality-with-adventure-creator</link>
        <pubDate>Tue, 22 Apr 2025 10:24:23 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Alatriste</dc:creator>
        <guid isPermaLink="false">15935@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I'm looking to improve my testing workflow in Unity with Adventure Creator. Currently, I'm using a debug mode with a marker that I have to constantly move around the scene to position my player character during testing. This is time-consuming and interrupts my creative flow.</p>

<p>I found a script called "Play From Here" on <a rel="nofollow" href="https://www.reddit.com/r/Unity3D/comments/a82vcm/stop_wasting_time_while_testing_and_play_from/" title="Reddit">Reddit </a>that allows right-clicking anywhere in the scene view to start the game with the player at that position. This would save me tons of time during development and testing.</p>

<p>I think it would be great if AC would include something like this. If not, could someone indicate how to integrate it with AC?</p>

<p>Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>[Custom Action] TransitionsPlus: How to hide UI/Menus during scene transition?</title>
        <link>https://adventurecreator.org/forum/discussion/15787/custom-action-transitionsplus-how-to-hide-ui-menus-during-scene-transition</link>
        <pubDate>Mon, 24 Feb 2025 11:10:13 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>Alatriste</dc:creator>
        <guid isPermaLink="false">15787@/forum/discussions</guid>
        <description><![CDATA[<p>Hey there! I'm working with Adventure Creator and <a rel="nofollow" href="https://kronnect.com/guides/transitions-plus-parameters/" title="TransitionsPlus">TransitionsPlus</a> to create scene transitions, and I'm having a small issue with the UI visibility during transitions.<br />
I've created a custom action that successfully implements TransitionsPlus transitions. The transition itself works perfectly, but there's one small detail: during the transition effect, the AC UI remain visible when they should be hidden.<br />
Here's my current working code for the custom action:<br />
<a rel="nofollow" href="https://pastecode.io/s/90n9nbxy" title="https://pastecode.io/s/90n9nbxy">https://pastecode.io/s/90n9nbxy</a></p>

<p>Any guidance or suggestions would be greatly appreciated. Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>Questions about Spine integration</title>
        <link>https://adventurecreator.org/forum/discussion/15779/questions-about-spine-integration</link>
        <pubDate>Sat, 22 Feb 2025 02:13:11 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>cruddish</dc:creator>
        <guid isPermaLink="false">15779@/forum/discussions</guid>
        <description><![CDATA[<p>Hi there!! I've been using the custom Spine integration script, working with a Spine animator, and have a couple questions if anyone can answer them:</p>

<ul>
<li>The script seems to require that separate skeletons be used for each direction. Is this necessary or is there another way to get it to play different animations depending on the direction, using one skeleton?</li>
<li>Additionally, how do you apply a skin change, either depending on the animation being played or the direction faced?</li>
</ul>

<p>Thank you!!</p>
]]>
        </description>
    </item>
    <item>
        <title>Use negative intensity for Shapeable blendshape</title>
        <link>https://adventurecreator.org/forum/discussion/15699/use-negative-intensity-for-shapeable-blendshape</link>
        <pubDate>Thu, 30 Jan 2025 02:00:14 +0000</pubDate>
        <category>Extending the editor</category>
        <dc:creator>darkgod90</dc:creator>
        <guid isPermaLink="false">15699@/forum/discussions</guid>
        <description><![CDATA[<p>Hi all,<br />
first post so be kind <img src="https://adventurecreator.org/forum/resources/emoji/smiley.png" title=":smiley:" alt=":smiley:" height="20" /> <br />
I've been following the 3D primer on Youtube and am using a Ready Player Me character. My focus currently is on character expressions, and have been trying to create a "sad" expression by frowning the mouth. I don't have any 3D modeling experience (nor I care about having one, in all honesty) so I am not able to modify the pre-existing blendshapes from "Ready Player Me", which do not contain a "mouthFrown" slider. Instead, I have to set "moutSmile" to -1 in order for the mouth to frown! This works great, but the "Relative intensity" parameter of the blendshape only accepts positives (from 0 to 100). <br />
I fixed this by modifying AC.ShapeableEditor.cs, line 100, to have the slider go from -100 to +100:</p>

<p>blendshape.relativeIntensity = CustomGUILayout.Slider ("   Relative intensity:", blendshape.relativeIntensity, -100f, 100f, "", "The relative intensity (from -100 -&gt; 100) of the Blendshape when the Key is fully active");</p>

<p>Now the question: is this the correct approach, or is there a better (more AC) way to do this? How to retain this change when a new version is created?</p>

<p>Thanks!</p>
]]>
        </description>
    </item>
   </channel>
</rss>
