Unity3d 4.1.2、C# mono を使用。
次のスクリプトに移動します。
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour
{
public float MoveSpeed = 30.0f;
public float maxVel = 0.000000001f;
// Use this for initialization
void Start ()
{
//Physics.gravity = Vector3(0,-50,0);
}
void FixedUpdate()
{
maxVel = 20f;
MoveSpeed = 50.0f;
if(Input.GetKey(KeyCode.D))
{
rigidbody.AddForce(Vector3.right * MoveSpeed);
Debug.Log("BEFORE = " + rigidbody.velocity.magnitude);
}
if(Input.GetKey(KeyCode.A))
{
rigidbody.AddForce(Vector3.left * MoveSpeed);
}
rigidbody.velocity = Vector3.ClampMagnitude(rigidbody.velocity, maxVel);
Debug.Log("AFTER = " + rigidbody.velocity.magnitude);
}
// Update is called once per frame
void Update ()
{
}
}
ご覧のとおり、正常に動作し、クランプにいくつか問題がありましたが、最終的に動作するようになりました.
1つの問題があります...
Unity の物理エンジンで、y の値を -30 に変更し、マテリアルの「バウンス」を 1 に設定して、エネルギーを失わないようにしました。
問題は、クランプがすべての軸に影響を与えるため、クランプがリバウンド効果をクランプしていることです:(したがって、リジッドボディは決してy位置に戻りません。
x 軸のみに作用するようにクランプを変更する方法はありますか? これに関する情報を見つけることができませんでした。
みんな乾杯