我遇到的问题是,当Playmaker使用角色控制器时,我的播放器正在低于地面。当使用胶囊对撞机和刚体时,我的播放器移动良好,但当它的位置和旋转被冻结时,我没有与墙壁发生任何碰撞。当我解开x和z冻结位置时,我的玩家朝着它的z方向滑动(意味着空间设置为自己)但是与墙壁碰撞。
在Playmaker中我使用translate进行移动并使用我自己的前向和后向Vector3变量,x和y为零,z为10和-10。
答案 0 :(得分:0)
翻译就像“传送”。
您需要使用设定速度或添加力。
当然还有一个对着你的墙。
如果你真的想使用“翻译”,你可以使用这个脚本:
#pragma strict
var layerMask : LayerMask; //make sure we aren't in this layer
var skinWidth : float = 0.1; //probably doesn't need to be changed
private var minimumExtent : float;
private var partialExtent : float;
private var sqrMinimumExtent : float;
private var previousPosition : Vector3;
private var myRigidbody : Rigidbody;
//initialize values
function Awake() {
myRigidbody = rigidbody;
previousPosition = myRigidbody.position;
minimumExtent = Mathf.Min(Mathf.Min(collider.bounds.extents.x, collider.bounds.extents.y), collider.bounds.extents.z);
partialExtent = minimumExtent*(1.0 - skinWidth);
sqrMinimumExtent = minimumExtent*minimumExtent;
}
function FixedUpdate() {
//have we moved more than our minimum extent?
var movementThisStep : Vector3 = myRigidbody.position - previousPosition;
var movementSqrMagnitude : float = movementThisStep.sqrMagnitude;
if (movementSqrMagnitude > sqrMinimumExtent) {
var movementMagnitude : float = Mathf.Sqrt(movementSqrMagnitude);
var hitInfo : RaycastHit;
//check for obstructions we might have missed
if (Physics.Raycast(previousPosition, movementThisStep, hitInfo, movementMagnitude, layerMask.value))
myRigidbody.position = hitInfo.point - (movementThisStep/movementMagnitude)*partialExtent;
}
previousPosition = myRigidbody.position;
}