Buenas :) tengo un problema y es que tengo un personaje tipo ragdoll pero se desploma en vez de mantenerse de pie ,lo veo lógico porque estoy usando las físicas de el propio gms, osea tengo activadas las físicas en los objetos, intente usar la función de physics_apply_force() en la cabeza para que le empujara para arriba pero cuando se cae ya no se vuelve a levantar, e probado muchas cosas pero nada me funciona ¿que puedo hacer? :'(
Interesante. ¿Has creado el personaje con código o qué método has empleado?
Podrías aplicar una fuerza de rotación para mantenerlo vertical.
el personaje en si es código ,solo tengo dos sprites el del cuerpo y el de al cabeza y para hacer las extremidades he usado el mismo sprite pero horizontal, así tenia un stickman estilo ragdoll.
En un objeto a parte de la cabeza y del cuerpo he creado un objeto llamado "obj_ragdoll_create" y puesto un create que lo que hace es crear el personaje y unirlo con la función de physics_joint_revolute_create()
aquí esta el código por si alguien lo quiere:
//creacion de cabeza
cabeza = instance_create(x, y - 48, obj_ragdoll_cabeza);
//creacion de cuerpo
cuerpo1 = instance_create(x, y - 16, obj_ragdoll_cuerpo);
cuerpo2 = instance_create(x, y + 16, obj_ragdoll_cuerpo);
//union entre cabeza y cuerpo,
physics_joint_revolute_create(cuerpo1, cuerpo2, x, y, 0, 0, 0, 0, 0, 0, 0);
physics_joint_revolute_create(cuerpo1, cabeza, x, y - 32, 0, 0, 0, 0, 0, 0, 1);
plus = 12; //margen entre las extremidades y el cuerpo
//creacion de pierna derecha
pierna1 = instance_create(x + 16 + plus, y + 32, obj_ragdoll_arti);
pierna2 = instance_create(x + 48 + plus, y + 32, obj_ragdoll_arti);
//union entre pierna derecha y cuerpo
physics_joint_revolute_create(pierna1, cuerpo2, x + plus, y + 32, 0, 0, 0, 0, 0, 0, 0);
physics_joint_revolute_create(pierna1, pierna2, x + 32 + plus, y + 32, -150, 150, 1, 0, 0, 0, 0);
//creacion de pierna izquierda
pierna1 = instance_create(x - 16 - plus, y + 32, obj_ragdoll_arti);
pierna2 = instance_create(x - 48 - plus, y + 32, obj_ragdoll_arti);
//union entre pierna izquierda y cuerpo
physics_joint_revolute_create(pierna1, cuerpo2, x - plus, y + 32, 0, 0, 0, 0, 0, 0, 0);
physics_joint_revolute_create(pierna1, pierna2, x - 32 - plus, y + 32, -150, 150, 1, 0, 0, 0, 0);
//creacion de brazo derecho
brazo1 = instance_create(x + 16 + plus, y - 32, obj_ragdoll_arti);
brazo2 = instance_create(x + 48 + plus, y - 32, obj_ragdoll_arti);
//union brazo derecho y cuerpo
physics_joint_revolute_create(cuerpo1, brazo1, x + plus, y - 32, 0, 0, 0, 0, 0, 0, 0);
physics_joint_revolute_create(brazo1, brazo2, x + 32 + plus, y - 32, -150, 150, 1, 0, 0, 0, 0);
//creacion de brazo izquierdo
brazo1 = instance_create(x - 16 - plus, y - 32, obj_ragdoll_arti);
brazo2 = instance_create(x - 48 - plus, y - 32, obj_ragdoll_arti);
//union brazo izquierdo y cuerpo
physics_joint_revolute_create(cuerpo1, brazo1, x - plus, y - 32, 0, 0, 0, 0, 0, 0, 0);
physics_joint_revolute_create(brazo1, brazo2, x - 32 - plus, y - 32, -150, 150, 1, 0, 0, 0, 0);
instance_destroy();//se autodestruye
que quieres decir con la fuerza de rotación ?
no quiero que el personaje se quede tieso lo que quiero es que el personaje se mueva como en este video https://www.youtube.com/watch?v=8VXe61YshJ8
Aún no le he intentado, pero tal vez se puede hacer con el tipo de unión "weld", para mantener las extremidades en ángulos relativos al torso, pero con un poco de flexibilidad.
Después aplicar algunas técnicas de los tutoriales sobre "physics platformers" para mantener el personaje en posición vertical.
Este ejemplo puede servir
https://marketplace.yoyogames.com/assets/520/physics-platformer-advanced
no encontré en el manual ninguna unión llamada "weld" ,si me pudieras escribir la función completa me harías un gran favor
La función es physics_joint_weld_create
Estoy empezando a probarla. Aquí un ejemplo (https://yal.cc/r/gml/?mode=2d&tabs_lz=NobwRAdghgtgpmAXGA6nANgYwPbwApQDmCANGDgCYLID0NABAMIBOcUALnPQKIBucEdgB1mQiCLF16ASwjTM0qOmkAvKM3owArhArYJEAA4ALAJ4BneeYD6Ad2zN0Fa5lYc4ACgCMNAKwAGAEoAbgMTCys7BydrQmYoXml2Uw9-EnpfEIMDbGtpCnoAXnoIbGwIOGD6OllzdigIBSgSrTheKDC8guLS8srqmlr6xsV6Q1ZEjtEIAA8i+i8A0OnTea9-f2WxAwAzaTni8MtMGz2Z9i1WFzdODxCB1zYNM4vWMLNj0-3XuGtzOHY1ioEEsyQ8Z3S-gAdJktkYPpEXpdfv9ATh0MpLOVYsxsFpDOD9ukvFlpkdEd9kX8AdYAEbYGZ-YxQQyeCEZNL0ABMQSqdB2DhgzVYmGGhC06HU2WmAo0Hmk802MnoAB4MlVpABqTXBQIDHTSDS+MbSOBqcwGEAGeg2+i5fLzIYNTC-R7uDxzTX0bw8+gAKhkgXSpnS2FpACtrCS+YMQcMmtbbeSTtYkVdabIKISZqGuvc6FBLIRoM9KW9prb6ImbdIdt6FQA+ej+egAMlbyrVmWr9CtFcrtoLcTghHU9ANfXM9GakqnTpGhZkgjgzHgFEUFv7A7GCJT4ewskBtgwzjdt0MXVz+RIPcrnu9Xl9AekeoAtPQAGyckPN4mcx-pDsSj-KSYiVgAvj2F4OsU9oUHCkHTAYrCshwHgAMyBJaPZ5HGjpxs6ro3J4t62vEui4NY5HEBhGzpAEQTpKRNrkXoMBUQ0NHoXR9AACwbEGdoRlGoEQJWyZfOcVIZro2bpLhdSiYh2wyvsjDMrI8wSamZZEWwtyidpaYojS6KYtI2JxHiBJnOpUCyMShm7pJPzUmiGkQEyLJsmpHnpOwzCtKJBYUAUhgHoIm5iEZunWFAoXWOFh7ZnZDkZPRTkRCmxlxQlSWCClfn0AAHDxsLvFlLlUvFzj5ewhX2RA6SlZyDGZZ8OlSVcNWJRF9W2UVvj0QJcJ0DJBTsMYXDGQYCnsPhdSEdc+meJynJhpGXLtRSXW-ONDVpXNokGAAxFQewVPQdRwIYBi1poeL-C4U2YAA1nSWjsOw2LjHA5j-FmMC0tY6BwDs7BYdMfZgbac0LfGenujAj2-DmD1aE9P4bSJcLic5nWuft7JHQh0piGdYOyFwFDxLYFUdfYjjODTUC2ECcC0lohAeD2dDhOznOEFRAhUMwcVQLStL0AAPrzND81QgvC7oK4uNgGLSFinmGPZzBTrLW47qYAtc8rotqzA+tywrHOm6wKtizgVzmMyrJW4bNtK-b5v7oe7swzafNmCbQve6rYZSwbAdGyHZuqy73lRRAIRgOBAC6QA).
Haz clic para agregar más bloques.