[英]Unity 2D Platformer script
我是 Unity 和 C# 的新手。 我试图编写一个 2D 平台游戏运动脚本,但由于某些原因,我创建的代码不起作用。
该脚本被称为一个圆圈。 我添加了“Rigidbody2D”和“Circle Collider 2D”。
我试过使用这个脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
public Rigidbody2D rb;
public void FixedUpdate()
{
if (Input.GetKey(KeyCode.RightArrow))
{
rb.AddForce(10, 0, 0);
}
}
}
代码应该点击圆圈以使其向右移动,但 Visual Studio 表示“rb.AddForce”是一个错误。 你能帮我吗?
你确定你真的引用了刚体? 您是否在编辑器中拖动了刚体? 如果没有,您还可以说以下内容(如果脚本附加到包含您要移动的刚体的对象):
private Rigidbody2D rb;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
1) 确保您的刚体组件未设置为 Kinematic。
2)根据刚体的质量和线性阻力,您需要相应地更改施加到它的力。 代码可能正在运行,但如果您没有施加足够的力,您将看不到身体移动。
3) Addforce()需要一个Vector作为参数。 这是你的问题。
public float thrust; //set in editor, this is how strong you will be pushing the object
private Rigidbody2D rb;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.RightArrow))
{
rb.AddForce(transform.right * thrust); //this will move your RB to the right while you hold the right arrow
}
}
4) 设置刚体的线性阻力,使其在施加力后实际上可以停止。 为了使它工作,例如将质量和线性阻力都设置为 1,然后只试验推力变量,它最终会开始移动。 之后,您可以减少/增加线性阻力和推力,直到达到所需的效果。
奖励如果您希望按照您在代码中尝试过的方式使用 Vector3D,您可以执行以下操作,它也可以工作:
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.RightArrow))
{
rb.AddForce(new Vector3(10, 0, 0)); //this will move your RB to the right while you hold the right arrow
}
}
由于 Rigidbody2D 实现,它将构造函数中的 Vector2 作为参数,而不是简单的 Rigidbody,后者可以将 Vector3 和 Vector2 作为 Vector3。 考虑Vector3 v3 = new Vector2(10, 0);
和Vector2 v2 = new Vector3(10, 0, 0);
尝试这个
rb.AddForce(new Vector2(10, 0));
或者
rb.AddForce(new Vector3(10, 0, 0));
您需要添加 ForceMode2D.Impulse 才能使其工作:
using UnityEngine;
public class TestControl : MonoBehaviour
{
public Rigidbody2D rb2d;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.RightArrow))
{
rb2d.AddForce(new Vector2(5, 0 ), ForceMode2D.Impulse);
Debug.Log("RightArrow was Pressed");
}
}
}
您可以在这里找到更多信息: https : //www.studytonight.com/game-development-in-2D/right-way-to-move
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.