#c# #unity3d
#c# #unity3d
Вопрос:
using UnityEngine;
public class Movement : MonoBehaviour
{
public Rigidbody rb;
public float f = 100;
public float b = -100;
public float l = -100;
public float r = 100;
public float u = 10;
public bool onGround = true;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (onGround)
{
if (Input.GetKeyDown("space"))
{
rb.AddForce(0, u, 0, ForceMode.VelocityChange);
onGround = false;
}
}
if (Input.GetKey("w"))
{
rb.AddForce(0, 0, f);
}
if (Input.GetKey("a"))
{
rb.AddForce(l, 0, 0);
}
if (Input.GetKey("d"))
{
rb.AddForce(r, 0, 0);
}
if (Input.GetKey("s"))
{
rb.AddForce(0, 0, b);
}
if(onGround == false)
{
rb.AddForce(Physics.gravity * rb.mass);
}
}
private void OnCollisionEnter(Collision collision)
{
if(collision.collider.tag == "Ground")
{
onGround = true;
}
}
}
Это мой код. Поскольку я хотел, чтобы мой куб опрокидывался при движении, я хотел бы добавить силы над центром масс с небольшой задержкой. Согласно тому, как я визуализирую, это приведет к опрокидыванию куба.
Как я мог это сделать, это хороший способ сделать это или есть другой способ свергнуть мой куб? Спасибо.
Ответ №1:
вы можете сделать это в unity напрямую, добавив физический материал в куб в нем (Box Collider) и изменив значения, но если вы хотите сделать это из кода, вы должны сначала упомянуть об этом, а затем отредактировать его значения следующим образом:
using UnityEngine;
public class TestPlayerMovement : MonoBehaviour {
public BoxCollider BX;
// and then drag it from unity
void FixedUpdate () {
//it's better to use FixedUpdate bec it's movement
//examples
BX.material.bounciness = 0;
BX.material.dynamicFriction = 0;
BX.material.staticFriction = 0;
print (BX.material.staticFriction);
print (BX.material.bounciness);
print (BX.material.dynamicFriction);
}
Комментарии:
1. Я не понял, как мы можем использовать Box collider для добавления задержки или как изменить положение действия силы?
2. в box collider есть такая вещь, как material, которая отвечает за трение и упругость, поэтому, если вы увеличили трение с полом, куб опрокинется, а также заметите, что это куб, его не так просто заставить его опрокинуться самостоятельно, попробуйте, например, использовать капсулу
3. Большое спасибо за помощь!