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
		ShrunkPolygon.append(HalfwayPoint)
	
	var i = 0
	while i < 3: #Don't know if the points starts at 0 or 1, because normally arrays starts at 0 index.
		
		Shrink(i)
		i += 1

func Shrink(i):
	$Tween.interpolate_property($Polygon2D,"polygon",$Polygon2D.polygon[i],ShrunkPolygon[i],2,Tween.TRANS_LINEAR,Tween.EASE_IN_OUT)
	$Tween.start()

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:

https://forum.godotengine.org/55810/set-polygoncollider2ds-polygon-variable-in-gdscript

The_Black_Chess_King | 2020-09-23 11:33