Прыжок
Привет, мне нужно сделать прыжок в игре так что бы при нажатии на экран андроида он подпрыгивал. Физику я уже сделал. Все пишут код по разному, каждый по своему и многое не работает! У меня Unity 5 (32 битная), c# скрипт и MonoDevelor. А персонажа зовут person

Лучший ответ:
нуна примерно такую конструкцию
        if (Input.touchCount > 0)
        {

            foreach(Touch t in Input.touches)
            {

                if (grounted)
                {
                    rb.AddForce(Vector2.up * strenght);
                }

            }


        }
grounted -это булевая переменая отвечающая перс твой косаеться вообще земли
strenght - это сила с которой твой чел полетит в адфосе изначально импульс



Просмотров: 374

ledoed #1 - 5 месяцев назад 0
отлавливаешь нажатие тача Input.touches,или кнопой UI там предельно просто,ты говоришь физику сделал значит отправить импульс вверх те не составит труда (rigitbody.AddForce())
tsiganock #2 - 5 месяцев назад (отредактировано ) 0
ledoed:
ООО спасибо! Это точно!
ledoed:
Зделал всё по инструкции с интернета + твои советы, исправил все ошибки, но выдало последнюю ошибку The type or namespace name `RigitBody2D' could not be found. Are you missing an assembly reference? Не знаю как исправить! если хочешь вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerController : MonoBehaviour {

	public float VertImp;
	RigidBody2D rb;

	void Start () {
		rb = GetComponent<RigitBody2D> ();
	}

	void Update () {
		if (Input.toches ()) {
			RigitBody.AddForce (new Vector2 (0, VertImp), ForceMode2D.impulse);
		}
	}
}
ledoed:
Я кароч немного исправил, но ошибка тут!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerController : MonoBehaviour {

	public float VertImp;
	RigidBody2D rb;

	void Start () {
		rb = GetComponent<RigidBody2D> ();
	}

	void FixedUpdate () {
		if (Input.toches ()) {
			rb.AddForce (new Vector2 (0, VertImp), ForceMode2D.impulse);
		}
	}
}
ledoed #3 - 5 месяцев назад (отредактировано ) 0

нуна примерно такую конструкцию
        if (Input.touchCount > 0)
        {

            foreach(Touch t in Input.touches)
            {

                if (grounted)
                {
                    rb.AddForce(Vector2.up * strenght);
                }

            }


        }
grounted -это булевая переменая отвечающая перс твой косаеться вообще земли
strenght - это сила с которой твой чел полетит в адфосе изначально импульс
tsiganock #4 - 5 месяцев назад (отредактировано ) 0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerController : MonoBehaviour {

	public float VertImp;
	Rigidbody2D rb;

	if (grounted)
	{
		rb.AddForce(Vector2.up * strenght);
	}

	void Start () {
		rb = GetComponent<Rigidbody2D> ();
	}

	void FixedUpdate () {
		if (Input.tochCount > 0) {
			rb.AddForce (new Vector2 (0, VertImp), ForceMode2D.Impulse);
			foreach(Touch t in Input.touches)
		}
	}
}
мой код стал выглядеть вот так, а ошибки, тут и говорить нечего.
**Assets/script/playerController.cs(10,3): error CS1519: Unexpected symbol `if' in class, struct, or interface member declaration
Assets/script/playerController.cs(10,14): error CS1519: Unexpected symbol `)' in class, struct, or interface member declaration**
error CS9010: Primary constructor body is not allowed
Assets/script/playerController.cs(23,2): error CS1525: Unexpected symbol `}'
ledoed #5 - 5 месяцев назад (отредактировано ) 0
ту конструкцию что я скинул должна быть в update и переменная grounted должна быть реализована тобой