1

Unity3Dを使用してショッピングベースのゲームを作成しています。私のゲームでは、オブジェクトをベルトコンベアに沿って移動させ、それを拾い上げて、マウスを使用してショッピングカートに投げ込む必要があります。これまでのところ、マウスでアイテムを拾うことができますが、特定の方向にマウスを投げさせるにはどうすればよいでしょうか。また、マウスがゲームのある部屋の境界の外にオブジェクトをドラッグできないようにする必要があります。

私がこれまでに持っているコードは次のとおりです。

#pragma strict

var screenPoint:Vector3;
var offset:Vector3;

private var oldMouse:Vector3;
private var mouseSpeed:Vector3;

function Start(){
    oldMouse = Vector3.zero;
}

function Update(){
 mouseSpeed = oldMouse - Input.mousePosition;
 oldMouse = Input.mousePosition;
}

function OnMouseDown()
{
    screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
    offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}


function OnMouseDrag()
{
    var curScreenPoint:Vector3 = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
    var curPosition:Vector3 = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
    transform.position = curPosition;
}

function OnMouseUp(){
rigidbody.AddForce(mouseSpeed*Time.deltaTime, ForceMode.Force);
}

ジェームズ

4

2 に答える 2

1

rigidbody.MovePosition()で位置を設定してみてください。これにより、ワールドとの衝突が検出されます。

あなたのコードはまだテストしていませんが、力を加えるよりも OnMouseUp() でリジッドボディの速度を設定する方が適切だと思います。

これらは両方とも FixedUpdate() で実行する必要があることに注意してください。そのため、おそらくイベント メソッドでフラグを設定する必要があります。

于 2012-07-02T23:38:19.807 に答える