How to edit points of a Polygon2D?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By The_Black_Chess_King

I wanted to shrink a polygon, but because it’s shape is like a skewed square,

enter image description here

I though of editing each of the 4 points to their half Y position, making them meet at the middle. For that I calculated half their scalar vectors for each point, and I have the following code so far:

extends Node2D

onready var NormalPolygon = $Polygon2D.polygon
onready var ShrunkPolygon = []

func _ready():
	for Point in NormalPolygon: #Returns Vector2 of each point.
		var HalfwayPoint = Point / 2 #Here later will be just the Point.Y/2
	var i = 0
	while i < 3: #Don't know if the points starts at 0 or 1, because normally arrays starts at 0 index.
		i += 1

func Shrink(i):

In theory it should work, but the problem is that $Polygon2D.polygon returns a copy of the points, not a reference.

How can I edit the Polygon2D points?

I even though of using just the size, but the square looks like is getting squashed rather than shrinked.

Do you want to know how to set the points of a Polygon, or how to animate them with a Tween?
Because it’s easy to just set the position of points, but I don’t know if it’s even possible to animate them with a tween.

Adam_S | 2020-09-11 23:34

Yea, the Tween idea is to animate it smoothly… I have a shader material masked with the polygon2d texture.

The_Black_Chess_King | 2020-09-11 23:52

:bust_in_silhouette: Reply From: The_Black_Chess_King

So the workaround is to do it with the AnimationPlayer, we can keyframe the Polygon2D PoolVector2Array(), and it will deform through the frames with the continuous motion, but I don’t know why we can’t do it through gdscript using a tween.

Just as a reference for anyone looking for additional info:

The_Black_Chess_King | 2020-09-23 11:33