SphereCastについてと+a

実現したいこと

このスクリプトは、SphereCastで球状のレイを飛ばし、指定されたタグを持つオブジェクトに接触した場合、キー入力に応じてそのオブジェクトに向かって移動するスクリプトをつくる。

前提

C#スクリプトでSphereCastで球状のレイを飛ばし、指定されたタグを持つオブジェクトに接触した場合、キー入力に応じてそのオブジェクトに向かって移動するスクリプトをつくろうとしたところ、作動せずDebug.Logで動かない場所を探した。

発生している問題・エラーメッセージ

エラーメッセージなし

該当のソースコード

C#

1using System.Collections;2using System.Collections.Generic;3using UnityEngine;4 5public class find : MonoBehaviour 6{7 public string tagToCheck = "Player";8 private Vector3 targetPosition;9 public float moveSpeed = 5f;10 11 void Update()12 {13 RaycastHit hit;14 if (Physics.SphereCast(transform.position, 1.0f, transform.right, out hit, 5.0f, LayerMask.GetMask("Default")))15 {16 if (hit.collider.CompareTag(tagToCheck))17 {18 Debug.LogError("oi");19 20 if (Input.GetKeyDown("k"))21 {22 targetPosition = hit.collider.transform.position;23 }24 }25 }26 27 //球状のRayまでの距離を可視化28 Debug.DrawRay(transform.position, transform.right * 0f, Color.red);29 30 // targetPosition が設定されている場合は、目的地に向かって移動する31 if (targetPosition != Vector3.zero)32 {33 transform.position = Vector3.MoveTowards(transform.position, targetPosition, moveSpeed * Time.deltaTime);34 }35 }36 37 //球状のRayを可視化38 void OnDrawGizmos()39 {40 Gizmos.color = Color.red;41 Gizmos.DrawWireSphere(transform.position + transform.right * 0f, 60.0f);42 }43}

試したこと

上にもあるようにDebug.Logで確かめたことでそもそも接触判定からおかしいことがわかりました。

コメントを投稿

0 コメント