Collider2D.IsTouchingが常にfalseになってしまう場合

詳細はよく分かりませんが、静止状態でない場合にCollider2D.IsTouchingが正しく判定されないことがあるみたいです。

[Unity] collider.IsTouching(collider) が動いてる状態だとまともに動かない件。バグ?|Unity|エンジニアリングメモ
http://chusotudensi.blog.shinobi.jp/unity/-unity-%20collider.istouchin

ということで、そういう場合はBounds.Intersectsあたりを使って接触判定するなどのworkaroundが使えるみたいです。

if (_Collider.bounds.Intersects(_Collider2.bounds))
{
  Debug.Log("Bounds intersecting");
}

Collider2D.IsTouchingで困っている人は試してみてください。

リンク

Unity – Scripting API: Collider2D.IsTouching
https://docs.unity3d.com/ScriptReference/Collider2D.IsTouching.html

Unity – Scripting API: Collider2D.bounds
https://docs.unity3d.com/ScriptReference/Collider2D-bounds.html

Unity – Scripting API: Bounds.Intersects
https://docs.unity3d.com/ScriptReference/Bounds.Intersects.html

C#でグローバルな定数を扱いたい時

C#でグローバルな定数を扱いたい時、いろいろな方法があると思いますが、static classusing staticを使うという方法があります。

使い方は次のような感じです。

定数の定義

static class Value
{
  public const int size = 10;
}

定数の使い方

using System;
using static Value;

class Example
{
  static public void Main ()
  {
    Console.WriteLine($"size = {size}");
  }
}

using staticを使うとクラス名.の部分が省略でき、見やすくなるので便利です。

リンク

using static directive – C# Reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-static

.htaccessで特定ボットのアクセスを拒否する書き方

最近、「SemrushBot」「Linespider」「BLEXBot」あたりのボットが活発に活動しているようで、Webサーバーに大量のログが残っていました。検索エンジン関係であればボットのアクセスも必要経費と見なせますが、SEO系ボットによるアクセスはサーバーの負荷になるだけなので、余り嬉しくありません。

ということで、特定のボットによるアクセスを拒否したい場合は.htaccessに以下の内容を追加してみると良いと思います。注)

SetEnvIf User-agent "SemrushBot" BadBot
SetEnvIf User-agent "Linespider" BadBot
SetEnvIf User-agent "BLEXBot" BadBot
Deny from env=BadBot

robots.txt

User-agent: SemrushBot
Disallow: /

User-agent: Linespider
Disallow: /

User-agent: BLEXBot
Disallow: /

のようにする方法もありますが、robots.txtを見ないボットもあり一々調べるのも面倒ですから、.htaccessが使えるサーバーであれあば.htaccessで拒否する方が望ましいと思います。


注) SemrushBot、Linespiderなどの文字列はアクセスログからユーザーエージェントを調べてください。(ユーザーエージェントの一部に該当文字列が含まれていれば拒否する設定になっています。)