Unity覚書 C#編 RayCastでめり込み回避
カメラが地形とかにめり込まないようにするときに使用
例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SampleA : MonoBehaviour {
Transform target;
Vector3 desiredPos;
Vector3 wallHitPosition;
void Start() {
}
void Update() {
/*
desiredPosを求めて代入する処理
*/
if(WallHitCheck(target.position, desiredPos, 1 << 8)){
//wallLayersの「 1 << 8 」はUserLayer8を拾うということ
transform.position = wallHitPosition;
}else{
transform.position = desiredPos;
}
}
protected bool WallHitCheck(Vector3 Target, Vector3 desired, int wallLayers){
RaycastHit wallHit;
if (Physics.Raycast(Target, desired - Target, out wallHit, Vector3.Distance(Target, desiredPosition), wallLayers, QueryTriggerInteraction.Ignore)){
wallHitPosition = wallHit.point; //Rayが当たった座標を代入
return true;
}else{
return false;
}
}
}
参考
【Unity】カメラが壁を貫通しないようにする方法【Unity】FPS系ゲーム制作に使えるraycastの使い方(3D・2D)
【Unity】RayCastを使いこなせ!判定や表示に使ってみよう
※間違ってたらすみません。
わかった時点で修正します。
コメント
コメントを投稿