Unity 2d跳跃脚本
本文关键字:脚本 跳跃 2d Unity | 更新日期: 2023-09-27 18:18:35
谁有一个好的2d游戏跳跃脚本在统一?代码我有作品,但仍然远没有跳跃,它看起来像它是飞行。
using UnityEngine;
using System.Collections;
public class movingplayer : MonoBehaviour {
public Vector2 speed = new Vector2(10,10);
private Vector2 movement = new Vector2(1,1);
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float inputX = Input.GetAxis ("Horizontal");
float inputY = Input.GetAxis ("Vertical");
movement = new Vector2(
speed.x * inputX,
speed.y * inputY);
if (Input.GetKeyDown ("space")){
transform.Translate(Vector3.up * 260 * Time.deltaTime, Space.World);
}
}
void FixedUpdate()
{
// 5 - Move the game object
rigidbody2D.velocity = movement;
//rigidbody2D.AddForce(movement);
}
}
通常跳楼的人用Rigidbody2D.AddForce
和Forcemode.Impulse
。看起来你的物体在Y轴上被推了一次,它会因为重力而自动下降。
的例子:
rigidbody2D.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
上面的答案现在在Unity 5或更新版本中已经过时了。用这个代替吧!
GetComponent<Rigidbody2D>().AddForce(new Vector2(0,10), ForceMode2D.Impulse);
我还想添加,这使得跳跃高度超私有,只能在脚本中编辑,所以这就是我所做的…
public float playerSpeed; //allows us to be able to change speed in Unity
public Vector2 jumpHeight;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
transform.Translate(playerSpeed * Time.deltaTime, 0f, 0f); //makes player run
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) //makes player jump
{
GetComponent<Rigidbody2D>().AddForce(jumpHeight, ForceMode2D.Impulse);
这使得你可以在Unity中编辑跳跃高度,而不必回到脚本。
边注-我想对上面的答案发表评论,但是我不能,因为我是新来的。:)
使用rigidbody组件的Addforce()方法,确保rigidbody被附加到对象上并且重力被启用。像这样
gameObj.rigidbody2D.AddForce(Vector3.up * 10 * Time.deltaTime); or
gameObj.rigidbody2D.AddForce(Vector3.up * 1000);
查看哪个组合和哪些值符合您的需求并相应地使用。希望能有所帮助