- Home /
How to solve a receiving error?
I am receiving this error message when playing the game , ai game.
SendMessage ApplyDammage has no receiver! UnityEngine.Component:SendMessage(String, Object) AdvancedAI:attack() (at Assets/AdvancedAI.js:69) AdvancedAI:Update() (at Assets/AdvancedAI.js:39)
What does this mean and how do I fix it the advanced ai script is below:
var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var attackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var attackRepeatTime = 1;
var TheDammage = 40;
private var attackTime : float;
var controller : CharacterController;
var gravity : float = 20.0;
private var MoveDirection : Vector3 = Vector3.zero;
function Start ()
{
attackTime = Time.time;
}
function Update ()
{
Distance = Vector3.Distance(Target.position, transform.position);
if (Distance < lookAtDistance)
{
lookAt();
}
if (Distance > lookAtDistance)
{
renderer.material.color = Color.green;
}
if (Distance < attackRange)
{
attack();
}
else if (Distance < chaseRange)
{
chase ();
}
}
function lookAt ()
{
renderer.material.color = Color.yellow;
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}
function chase ()
{
renderer.material.color = Color.red;
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
function attack ()
{
if (Time.time > attackTime)
{
Target.SendMessage("ApplyDammage", TheDammage);
Debug.Log("The Enemy Has Attacked");
attackTime = Time.time + attackRepeatTime;
}
}
function ApplyDammage ()
{
chaseRange += 30;
moveSpeed += 2;
lookAtDistance += 40;
}
Please help me fix this Unity Community I need it fixed urgently
I've formatted your code for you this one time. Please learn to format your code, or your question will be overlooked.
Answer by hoy_smallfry · Sep 01, 2013 at 07:41 PM
The one of the GameObjects you are sending a message to does not have a function called ApplyDammage
in any of it's scripts, so it gives you an error.
Two ways to fix it:
1) find the game object that doesn't have the script function, and add it.
2) Make it so the SendMessage will not do anything with a game object that does not have the function by using the DontRequireReceiver
option, like so:
Target.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
It's up to you to figure out which one fits your situation best.
Answer by citizen_rafiq · Sep 01, 2013 at 07:44 PM
reason for this error is ,there is no script attached with target object that contain ApplyDammage function with 1 parameter .
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
How to import the object from server to unity 2 Answers
Can someone help me fix my Javascript for Flickering Light? 6 Answers
Material doesn't have a color property '_Color' 4 Answers
Setting Scroll View Width GUILayout 1 Answer