Так что мне удалось исправить мой код батута, чтобы игрок подпрыгивал, как если бы он был на батуте. Однако у меня есть две проблемы с этим кодом.
Во-первых, когда вы прыгаете на батуте, он фактически запускает игрока прямо в стратосферу, и он просто продолжает двигаться, никогда не останавливаясь, как будто нет гравитации, которая могла бы его сбить. Несмотря на то, что я проверил гравитацию в настройках жесткого тела игрока.
И, во-вторых, даже если игрок не находится рядом с батутом, например. на платформе, к которой не прикреплен код сценария батута, игрок будет подброшен в воздух при немедленном запуске игры.
Код выглядит следующим образом:
using UnityEngine;
using System.Collections;
public class small_trampoline_bounce : MonoBehaviour
{
bool willBounce = false;
float bounceHeight = 10;
public Transform Player;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
Vector3 velocity = Player.rigidbody.velocity;
if (willBounce)
{
Player.rigidbody.velocity = new Vector3(velocity.x, 0, velocity.z);
Player.rigidbody.AddForce(0, bounceHeight, 0, ForceMode.Impulse);
willBounce = false;
}
}
void OnCollisionEnter(Collision Trampoline)
{
if (Trampoline.gameObject.name == "Player")
{
willBounce = true;
}
}
}
Также это текущее состояние настроек как батута, так и плеера.
Настройки плеера: http://gyazo.com/b4d924849a86e5158361f6081948e39f.png
Настройки батута: http://gyazo.com/ded2884b93dd53c9e1b7fabc57e4fe51.png
Physics.gravity
? - person Steven Hansen   schedule 14.02.2014